копирование папки или файла
Требуется батник, который в зависимости от того что в параметре %1 (файл или папка) копирует файл или папку. Копия должна лежать рядом с оригиналом.
(передаем в параметре полный путь файла - делает копию файла. Передаем полный путь папки, делает копию папки. Пример:
D:\texts\ файл.txt ---> D:\texts\ файл.txt.копия
D:\texts\ папка ---> D:\texts\ папка.копия
Запросов "файл или папка" быть не должно.
- работает. Но папки не копирует.
|
vxor, а как Вы указываете параметр?
|
Цитата:
Цитата Iska
vxor, а как Вы указываете параметр? »
|
Что это значит? Как его надо указывать? Его передает Total Commander...
|
Код:
@Echo Off
If "%~1"=="" Echo USAGE: %~nx0 ^<path^>&Exit /B 1
If Exist "%~1" (
PushD "%~1" 2>nul&&(
PopD
Xcopy /E /I "%~1" "%~1.copy"
)||(
Copy "%~1" "%~1.copy"
)
)
|
Прекрасно!!!! Можно краткий комментарий получить по работе скрипта? (8 часов не мог сделать это, а Вы за 3 минуты написали) Большое спасибо!!
|
Код:
@Echo Off
:: Проверяем, передан ли параметр. Если не передан - выходим с errorlevel 1 и сообщением с примером использования
If "%1"=="" Echo USAGE: %~nx0 ^<path^>&Exit /B 1
:: Для начала проверяем существование файла\папки по пути из переданного параметра
If Exist "%~1" (
:: Пробуем сделать pushd, если сработает - то очевидно, что это папка. 2>nul гасит сообщение о ошибке, если это файл
PushD "%~1" 2>nul&&(
:: Если вышло, используем popd для смены рабочего каталога обратно и копируем через xcopy, дописывая к имени папки .copy
PopD
Xcopy /E /I "%~1" "%~1.copy"
)||(
:: Если pushd не прошел, копируем как обычный файл, точно так же добавляя .copy к имени
Copy "%~1" "%~1.copy"
)
)
|
Не работает, если путь файла\папки с пробелом.. Можно исправить это?
|
vxor, отредактировал четвертый пост, исправил скрипт. Я там один символ пропустил, теперь с пробелами без проблем работать будет. Если будете использовать с путями, содержащими кириллицу, сохраните в кодировке 866.
|
Не копируются системные и скрытые файлы. Добавил /H в строку с xcopy. Теперь копирует папки со скрытыми файлами. Отдельные же скрытые файлы не копирует. Что сделать? Какие еще могут быть подводные камни?
Если на CMD это не сделаешь, то можно на VBS, WSH.
|
Время: 22:56.
© OSzone.net 2001-