Пакетная переменная пути не работает в Windows Server 2016 - PullRequest
0 голосов
/ 08 апреля 2019

мы недавно перешли с Windows Server 2008 на 2016 год, и у нас есть несколько задач по удалению файлов и папок на основе пакета каждый день.

Вот код:

set successful="D:\TEST\logs\successful.log"
set failed="D:\TEST\logs\failed.log"
set delpath="D:\TEST\1 und 2"

echo Logged time = %time% %date% >> %successful%
echo Logged time = %time% %date% >> %failed%

echo Files deleted: >> %successful%
echo Files failed to delete: >> %failed%

forfiles -p %delpath% -m *.* -c "cmd /c del /q @path && echo @path>>%successful% || echo @path>>%failed%"
forfiles -p %delpath% -c "cmd /c IF @isdir == TRUE rd /S /Q @path && echo @path>>%successful% || echo @path>>%failed%"

echo. >> %successful%
echo. >> %failed%

С сервера 2016 эта партия не работает. Некоторые проблемы с пробелами в пути.

Вывод:

ERROR: Invalid argument/option - 'und'.
Type "FORFILES /?" for usage.

Могут ли быть какие-то изменения в синтаксисе пути? Я пропустил кавычки?

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

Вот краткий пример того, что, как я понимаю, является одной и той же задачей: (очистка "D:\TEST\1 und 2" и регистрация как неудачных, так и успешных действий) ;но используя For циклы вместо ForFiles команд.Пожалуйста, не стесняйтесь попробовать и доложить по мере необходимости.

@Echo Off
Set "successful=D:\TEST\logs\successful.log"
Set "failed=D:\TEST\logs\failed.log"
Set "delpath=D:\TEST\1 und 2"

(Echo Logged time = %TIME% %DATE%&Echo Files deleted:)>>"%successful%"
(Echo Logged time = %TIME% %DATE%&Echo Files failed to delete:)>>"%failed%"

For /D %%A In ("%delpath%\*")Do RD /S/Q "%%A" 2>Nul&&(>>"%successful%" Echo %%A)||>>"%failed%" Echo %%A
For %%A In ("%delpath%\*")Do Del "%%A" 2>Nul&&(>>"%successful%" Echo %%A)||>>"%failed%" Echo %%A

Echo(>>"%successful%"
Echo(>>"%failed%"
0 голосов
/ 08 апреля 2019

Проблема не имеет ничего общего с именем самого каталога, а больше с тем фактом, является ли каталог пустым или нет, как вы можете видеть в следующем эксперименте (я начал добавлять пустой файл "blabla.txt" вкаталог, и я удалил его потом):

Prompt>forfiles /P "C:\1 und 2" /C "cmd /c echo @path"

"C:\1 und 2\blabla.txt"

Prompt>del "1 und 2\blabla.txt"

Prompt>forfiles /P "C:\1 und 2" /C "cmd /c echo @path"
ERROR: The system cannot find the file specified.
...