Пробелы в именах при перемещении
Вложений: 1
Форумчане, прошу вашей помощи. Требуется переместить список файлов, указанных в list.txt. Проблема в том, что он прекрасно переносит файлы с простыми именами, но как только появляется пробел в имени, он отказывается их видеть. Та же проблема с файлами, у которых в имени есть "нестандартные" символы, типа немецких умляутов или японских иероглифов. Можно ли его сделать "всеядным"?
PHP код:
@echo off
set LIST=list.txt
set TO=C:UserstestDesktop
for /F %%i in (%LIST%) do (
copy /Y "%%i" %TO%
)
pause
exit /B
Вот трейс. Первые два файла с пробелом и арабской вязью в именах. Третий — только латиница без пробелов.
http://forum.oszone.net/attachment.p...1&d=1417964816
|
Код:
for /f "tokens=*" %%i in ....
|
Код:
for /f "delims=" %%i in ...
|
Код:
@echo off
>nul chcp 1251
set "set LIST=C:\Users\user\Desktop\bat_test\list.txt"
set "set TO=C:\Users\user\Desktop\bat_test"
for /f "usebackq delims=" %%i in ("%LIST%") do (
>nul chcp 866
copy /y "%%i" "%TO%"
)
pause
exit /b
|
А можно вместо copy использовать robocopy? У copy я не нашел флаг запрета перезаписи уже имеющихся в папке файлов с такими именами.
|
VladIva, можно, но не нужно, поскольку есть такая конструкция:
Код:
echo no| copy /-y "%%i" "%TO%"
.
|
А есть ли возможность сохранить структуру папок при переносе?
|
Возможность есть, а смысла в двойной проверке не вижу. Если Вам нужно применить условие "if exist" для чего-нибудь ещё, кроме копирования файла, то напишите об этом.
|
Понял, лишняя проверка. А есть ли возможность сохранить структуру папок при переносе? Берем файл из C:\App\translit\arabic.cvs и переносим его в Z:\translit\arabic.cvs? На js, air или php я бы не задумываясь написал регулярку, забирающую строку перед последним слэшем, и собрал строку пути, но как это работает в батниках пока не понятно. Возможно, есть какой-то магический флаг, который сохраняет структуру?
|
VladIva, выбирайте из вариантов:
Код:
xcopy "C:\App\translit\arabic.cvs" "Z:\translit\"
;
Код:
echo d| xcopy "C:\App\translit\arabic.cvs" "Z:\translit"
;
Код:
echo f| xcopy "C:\App\translit\arabic.cvs" "Z:\translit\arabic.cvs"
.
|
Проблема в том, что папок translit может быть много:
Код:
C:\App\translit_ar\arabic.cvs
C:\App\translit_en\text.cvs
C:\App\translit_ru\temp000.txt
Структура на выходе:
Код:
Z:\translit_ar\arabic.cvs
Z:\translit_en\text.cvs
Z:\translit_ru\temp000.txt
|
Код:
@echo off
set "from=C:\App"
set "to=Z:"
subst #: "%from%"
for /f "delims=" %%i in ('
dir /a-d/b/s #:^| findstr /rc:"^#:\\translit_[^\\][^\\]*\\[^\\][^\\]*$"
') do xcopy /q "%%i" "%to%%%~pi"
subst /d #:
pause>nul
exit /b
|
Время: 21:38.
© OSzone.net 2001-