XP, CMD, файл Перемещения к папке с ДАТОЙ файлов

Я хочу использовать дату файлов для перемещения, сортируют файл. Скажите, что у меня есть файл test.txt, созданный 10.05.2011, я хочу смочь переместить файл в C:\2011\05\10\test.txt.

Вы приблизительно делаете что-то как enter image description here

Я предполагаю, что мой вопрос просто: Как можно поместить дату файлов на командную строку? Что должно заменить 'ДАТУ/t' для создавания test.txt "в" дату?

ОТРЕДАКТИРУЙТЕ Дальнейшее исследование: Я могу получить время даты через dir и найти..., но он не будет работать в пакетном файле...enter image description here

2
задан 10.05.2011, 18:50

0 ответов

Я сделал это как пакетный файл, следовательно двойные знаки %. Просто сделайте единственных при выполнении этого из командной строки.

for %%f in (*.txt) do (
for /f "tokens=1-3 delims=/ " %%i in ("%%~tf") do (
if not exist "C:\%%k\%%i\%%j" mkdir "C:\%%k\%%i\%%j"
move "%%f" "C:\%%k\%%i\%%j" >NUL
)
)

Таким образом, короткий ответ на Ваш вопрос о получении даты файла должен использовать %~tI в для оператора, где я - переменная, используемая в для оператора. См."help for"для большего количества информации о том, что еще доступно.

3
ответ дан 08.12.2019, 05:51

enter image description here
Я должен был выйти | с ^.

0
ответ дан 08.12.2019, 05:51

То, что необходимо сделать, принимают управление FOR и обрабатывают вывод команды DIR. Необходимо будет, вероятно, вложить два, ЧТОБЫ команды получили отдельные числа даты.

Предложенная команда DIR для использования:

dir c:\ /TC /A-D

Команда Suggested FOR:

FOR /F " TOKENS=1,5 delims= " %A IN ('dir c:\ /TC /A-D') DO @ECHO A-%A B-%B

Это должно дать Вам главным образом, в чем Вы нуждаетесь, чтобы заставить это работать. Проблема состоит в том, что CMD ужасен в этом виде работы. В то время как можно сделать это, я рекомендовал бы использовать более усовершенствованный язык как powershell. Это свободно для окон, и программное обеспечение Quest делает великого редактора GUI названным powerGUI.

Вот то, что я записал в Powershell, чтобы сделать это. Для меня намного легче следовать.

#Get files in C:\temp and filter out directories
$tarfol = "C:\temp" #Target Folder
$var = Get-ChildItem $tarfol | Where-Object {$_.mode -inotmatch "d"} 

#Process Files
foreach($item in $var)
    {
    #Build New Folder Path
    $folder = "$tarfol\$item.CreationTime.Year\$item.CreationTime.Month\$item.CreationTime.Day"

    #Test for for folder
    if(!(Test-Path $folder)) {
        #Create folder
        New-Item -Path C:\temp\$y\$m\$d -ItemType directory
        }
    #Move item
    Move-Item -Path $item.FullName -Destination "$folder"
    }

Надеюсь, это поможет.

2
ответ дан 08.12.2019, 05:51

Теги

Похожие вопросы