Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - копирование папки или файла

Ответить
Настройки темы
CMD/BAT - копирование папки или файла

Аватара для vxor

Старожил


Сообщения: 206
Благодарности: 3


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: vxor
Дата: 22-06-2012
Требуется батник, который в зависимости от того что в параметре %1 (файл или папка) копирует файл или папку. Копия должна лежать рядом с оригиналом.
(передаем в параметре полный путь файла - делает копию файла. Передаем полный путь папки, делает копию папки. Пример:
D:\texts\файл.txt ---> D:\texts\файл.txt.копия
D:\texts\папка ---> D:\texts\папка.копия

Запросов "файл или папка" быть не должно.
Код: Выделить весь код
copy %1 %1-копия
- работает. Но папки не копирует.

Отправлено: 16:11, 22-06-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


vxor, а как Вы указываете параметр?

Отправлено: 16:36, 22-06-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для vxor

Старожил


Сообщения: 206
Благодарности: 3

Профиль | Отправить PM | Цитировать


Цитата Iska:
vxor, а как Вы указываете параметр? »
Что это значит? Как его надо указывать? Его передает Total Commander...

Отправлено: 16:38, 22-06-2012 | #3


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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"
	)
)

Последний раз редактировалось Anonymоus, 22-06-2012 в 17:21. Причина: Исправлено

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:00, 22-06-2012 | #4


Аватара для vxor

Старожил


Сообщения: 206
Благодарности: 3

Профиль | Отправить PM | Цитировать


Прекрасно!!!! Можно краткий комментарий получить по работе скрипта? (8 часов не мог сделать это, а Вы за 3 минуты написали) Большое спасибо!!

Отправлено: 17:03, 22-06-2012 | #5


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@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"
	)
)
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:09, 22-06-2012 | #6


Аватара для vxor

Старожил


Сообщения: 206
Благодарности: 3

Профиль | Отправить PM | Цитировать


Не работает, если путь файла\папки с пробелом.. Можно исправить это?

Отправлено: 17:16, 22-06-2012 | #7


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


vxor, отредактировал четвертый пост, исправил скрипт. Я там один символ пропустил, теперь с пробелами без проблем работать будет. Если будете использовать с путями, содержащими кириллицу, сохраните в кодировке 866.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:22, 22-06-2012 | #8


Аватара для vxor

Старожил


Сообщения: 206
Благодарности: 3

Профиль | Отправить PM | Цитировать


Не копируются системные и скрытые файлы. Добавил /H в строку с xcopy. Теперь копирует папки со скрытыми файлами. Отдельные же скрытые файлы не копирует. Что сделать? Какие еще могут быть подводные камни?

Если на CMD это не сделаешь, то можно на VBS, WSH.

Последний раз редактировалось vxor, 25-06-2012 в 09:01.


Отправлено: 23:51, 22-06-2012 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - копирование папки или файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование имени папки/файла в буфер обмена cpp.svet Скриптовые языки администрирования Windows 3 06-07-2011 19:16
CMD/BAT - [решено] Поиск папки и Копирование файла в данную папку из известного места dark-------13 Скриптовые языки администрирования Windows 4 20-04-2011 11:48
CMD/BAT - [решено] копирование файла Адресной книги из общей папки на сервере в профиль пользователя tlekkanapin Скриптовые языки администрирования Windows 5 18-04-2011 13:24
VBS/WSH/JS - [решено] Копирование файла в системные папки Dimas_83 Программирование и базы данных 6 13-02-2009 13:29
Автоматическое копирование файла или папки BRAT2 Хочу все знать 3 02-11-2008 04:59




 
Переход