Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Автоматическая замена файлов (http://forum.oszone.net/showthread.php?t=267147)

KooDI 30-08-2013 12:25 2210058

Автоматическая замена файлов
 
Доброго времени суток всем.
Есть папка в которой есть файлы и каталоги с ними
c:\File\
Нужно все файлы и подкаталоги скопировать с заменой в
d:\File\1
d:\File\2
d:\File\3
d:\File\4
Если можно, то на таком языке что б можно было повесить на кнопку в тотале

Foreigner 30-08-2013 16:25 2210173

KooDI,
Код:

@echo off

for %%i in ( d:\file\1 d:\file\2 d:\file\3 d:\file\4 ) do xcopy /y /e c:\file\* "%%i"


KooDI 30-08-2013 18:07 2210240

Спасибо Foreigner все прекрасно работает за исключением того если в одном из пути есть русские символы то батник не работает, можете как-то подправить

Iska 30-08-2013 18:17 2210244

KooDI, в какой кодировке сохраняете пакетный файл?

KooDI 30-08-2013 18:34 2210259

Iska,
Блокнот Notepad++
В меню кодировка пишет UTF-8 без (BOM)
В строке состояния ANSI as UTF-8

Foreigner 30-08-2013 19:13 2210288

KooDI, Сохранеяй в cp866 (OEM), либо в cp1251, но тогда добавь команду 'chcp 1251'
Код:

@echo off
1>nul chcp 1251

...


KooDI 30-08-2013 19:30 2210305

Foreigner, не помогло
Пробовал все кодировки доступные в меню Кириллица, ни одна не помогла
Может быть из за того что в слове присутствует украинская буква "і"

Foreigner 30-08-2013 19:34 2210306

KooDI, Выложи батник

KooDI 30-08-2013 19:48 2210309

Foreigner, оказалось что кириллица здесь не причем, тот же результат и в латинице, в случае если в имени конечной папки присутствует пробел

Foreigner 30-08-2013 19:52 2210310

KooDI, Если папка с пробелом, то заключи в кавычки:
Код:

@echo off

for %%i in ( "d:\file\1" "d:\file\2" "d:\file\3" "d:\file\4" ) do xcopy /y /e "c:\file\*" "%%~i"

ЗЫ. Сорри, просто считал это очевидным

KooDI 30-08-2013 20:19 2210320

Foreigner,
Какие то силы свыше не хотят, что б у меня было все как у людей)
С латиницей все супер, с кириллицей все очень плохо, при запуске батника он создает рядом с назначающейся папкой папку у которой название состоит с всяких кракозяб, при этом если стой попки запустить программу то ее интерфейс выгладить так как будто он сквозь мясорубку прошел

Foreigner 30-08-2013 20:29 2210331

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

KooDI 30-08-2013 21:02 2210345

Вложений: 1
В последний раз проверил еще и cp1251, все заработало, а вот в cp866 (OEM) не работало.
Не знаю почему но при запуске батника сначала 1 секунду весит и там всякие в консоли крякозябли прилагаю в низу, а потом уже бежит список с путями, но главное что все работает.
Спасибо вам огромное за потраченное время и силы, всего вам наилучшего.

Foreigner 30-08-2013 21:59 2210382

KooDI,

Я вообще не смог перекодировать в читаемый вид, хоть файл в utf-8 :(
Cоздай изначально в блокноте в виндовой кодировке cp1251 (ANSI). В юникоде батники не работают.

KooDI 30-08-2013 23:13 2210429

Foreigner,
Пробовал все равно так само, но главное что все действует.
Спасибо вам за все.

Anonymоus 06-09-2013 20:51 2213917

Цитата:

Цитата Foreigner
В юникоде батники не работают. »

Работают, главное без BOM сохранять. У меня забавы ради даже небольшой cgi-вебсервер на ponyasha.tk поднят, где всё генерируется с помощью батников, в юникоде, естественно.

Foreigner 06-09-2013 21:11 2213924

Anonymоus, В каком редакторе?

Anonymоus 06-09-2013 21:20 2213926

Foreigner, в любом, который это позволяет. AkelPad, Notepad++, etc. Если под рукой ничего, кроме стандартного Notepad нету, а в UTF-8 сохранить очень хочется, то первую строку оставляем пустой (или вписываем " 2>nul" для подавления ошибки), а "@Echo Off" переносим на другую строку.
Но вопрос о редакторе можно автоматически снять, так как согласно
Цитата:

Цитата KooDI
Блокнот Notepad++ »

у топикстартера как раз один из тех редакторов, в которых можно отключить Byte Order Mark при сохранении.


Время: 08:46.

Время: 08:46.
© OSzone.net 2001-