2014-12-25 3 views
3

Я пытаюсь создать простой командный файл, который будет индивидуально сжимать «rar» каждый файл в исходном каталоге. Именование файлов rar должно основываться на дате/времени создания файла.Вложенные команды в пакетном файле

Имея трудности с получением имен, отражающих точную дату/время. В настоящее время все созданные файлы rar имеют одно и то же имя. Подумайте, проблема связана с использованием вложенных команд FOR

Новичок здесь. По достоинству оцените помощь, если это возможно.

setlocal 
set _source=H:\Test 
set _dest=J:\output 

for /f "delims=/ tokens=1-3" %%a in ("%DATE:~4%") do (
     for /f "delims=:. tokens=1-4" %%m in ("%TIME: =0%") do (
      set _FILENAME=basename%%c%%b%%a%%m%%n%%o%%p 
     ) 
    ) 

ECHO %_FILENAME% 

for %%I in (%_source%\*.*) DO (

md "%_dest%\%%~nI" 
"rar.exe" A -v50M -m0 -k -y -ep1 -r -t -hp[aabbcc] "%_dest%\%%~nI\%_FILENAME%.rar" "%_source%\%%~nxI" 
phpar2.exe c -s640000 -r10 -l "%_dest%\%%~nI\%_FILENAME%.par2" "%_dest%\%%~nI\%_FILENAME%*.rar" 

) 

ответ

1
@echo off 
setlocal 
set "_source=H:\Test" 
set "_dest=J:\output" 
setlocal enableDelayedExpansion 

for %%I in (%_source%\*.*) DO (
    for /f "delims=/ tokens=1-3" %%a in ("%DATE:~4%") do (
     for /f "delims=:. tokens=1-4" %%m in ("!TIME: =0!") do (
      set _FILENAME=basename%%c%%b%%a%%m%%n%%o%%p 
      ECHO !_FILENAME! 
     ) 
    ) 
    md "%_dest%\%%~nI" 
    "rar.exe" A -v50M -m0 -k -y -ep1 -r -t -hp[aabbcc] "%_dest%\%%~nI\!_FILENAME!.rar" "%_source%\%%~nxI" 
    phpar2.exe c -s640000 -r10 -l "%_dest%\%%~nI\!_FILENAME!.par2" "%_dest%\%%~nI\!_FILENAME!*.rar" 
) 

endlocaL 
endlocal 

Является ли это то, что вы хотите? Вы можете вложить три петли, но для использования _FILENAME вам понадобится delayedExpansion.

+0

Это не совсем то, что я пытаюсь сделать. Я пытаюсь вставить петлю _FILENAME в цикле %% I (т.е. каждый раз, когда он проходит через каждый файл в исходном каталоге, ему будет назначено новое уникальное имя файла, привязанное к дате и времени. – David

+0

@David aaah! Просто дай мне – npocmaka

+0

@David - проверить мое редактирование – npocmaka

Смежные вопросы