2

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

Вы можете сделать что-то вроде

Я думаю, мой вопрос прост: как вы можете поместить дату файлов в командной строке? Что должно заменить 'DATE /t', чтобы получить test.txt, созданный на дату?

РЕДАКТИРОВАТЬ Дальнейшее исследование: я могу получить дату и время через каталог и найти ... но это не будет работать в командном файле ...

3 ответа3

3

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

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 в операторе for, где I - переменная, используемая в операторе for. См. « help for » для получения дополнительной информации о том, что еще доступно.

2

Вам нужно взять команду FOR и обработать вывод команды DIR. Вам, вероятно, придется вложить две команды FOR, чтобы получить отдельные числа даты.

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

dir c:\ /TC /A-D

ПРЕДЛАГАЕМОЕ ЗА команду:

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

Это должно дать вам в основном то, что вам нужно, чтобы заставить это работать. Проблема в том, что CMD ужасен при такой работе. Хотя вы можете это сделать, я бы порекомендовал вам использовать более продвинутый язык, такой как powershell. Это бесплатно для Windows, и Quest Software делает отличный графический редактор под названием 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"
    }

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

0


Я должен был избежать | с ^.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .