При вызове
test.cmd "жжжж цццц.txt" C:\Temp\-2
в файл
~Xcopy.Tmp
попадает %1 вместе с кавычками, а для
xcopy
нужно
без кавычек.
@Echo Off
If '%2==' GoTo :Eof
setlocal DisableDelayedExpansion
set "file=%~1"
setlocal EnableDelayedExpansion
echo !file!>~Xcopy.Tmp
xcopy *.txt %2\ /D /Y /Exclude:~Xcopy.Tmp
If Not %ErrorLevel%==0 (
Echo Ошибка при копировании
Pause
GoTo :Eof
)
del ~Xcopy.Tmp
Дополнение:
Указанное выше удаление кавычек из входного параметра универсально. А для файлов есть более интересный способ:
DIR /B %1 > ~Xcopy.Tmp
. Который позволяет использовать подставочные знаки (* и ?).
БылоНе удалять файл исключения (он всё равно перезаписывается) и проверить правильность.
И попробовать для него абсолютный путь %CD%\~Xcopy.Tmp
.