Я пытаюсь написать небольшой пакетный скрипт, который будет удалять файлы из старого каталога. Первый параметр - это каталог для скрипта, для которого требуется посмотреть, а второй - количество сохраняемых файлов.Batch Scripting, для использования результатов поиска
rem @ECHO OFF
rem %1 is the path in which to look for the files
rem %2 is the number of recent files to preserve
if [%1] EQU [] (
echo ERROR: Missing Required Paramater directory path.
goto :eof
)
if [%2] EQU [] (
echo ERROR: Missing Required Paramater, number of files to preserve
goto :eof
)
if %2 LSS 0 (
echo ERROR: Number of files to preserve provided was negative
goto :eof
)
set FolderPath=%1
set SafeNumber=%2
cd %FolderPath%
for /f %%f in ('dir /O-D /A-D /B') do call :delete %%f
goto :eof
:delete
if %SafeNumber% LEQ 0 (
del %1
) else (
set /a SafeNumber-=1
)
goto :eof
:eof
По сути то, что я вот реж, который выводит список имен файлов, упорядоченных от нового к старому. В зависимости от того, что такое SafeNumber, он пропустит первые несколько файлов, а затем обработает удаление после того, как SafeNumber < = 0.
Проблема, с которой я столкнулся сейчас, это если имя файла «Test File.txt» (as in содержит пробел. «Тест» передается в delete как% 1, а не «Test File.txt».
Любые идеи о том, как заставить мой скрипт работать, или, возможно, у кого-то есть лучшее письменное решение?
Изменен для постановки быть: для/F "delims =" %% е в ('реж/OD/AD/B % FolderPath% ') делают вызов: удалить «%% f» , и теперь удаление получает полное имя файла. Котировки помогли кучу, не подумали об этом. –