PDA

Показать полную графическую версию : [решено] Подскажите по батнику, который будет удалять всё содержимое папки по расписанию


Spooller
28-10-2015, 19:00
ОС WinServer 2000
Вариант:
cmd.exe pushd "d:\папка\" && (rmdir /s /q "d:\папка\" & popd) 2>nul
отлично работает, если его запускать из cmd вручную. Но не пашет, если сделать его в файле и запускать файл. Что ему не так?

Iska
28-10-2015, 19:52
Но не пашет, если сделать его в файле и запускать файл. Что ему не так? »
Упакуйте этот файл в архив, приложите архив к сообщению.

Spooller
29-10-2015, 11:00
Вот. Спасибо за участие.130400

Foreigner
29-10-2015, 11:12
Spooller, Сохраните батник в кодировке cp866 или cp1251 (в этом случае необходимо сменить кодировку консоли: chcp 1251)

Spooller
29-10-2015, 11:38
Об этом я подозревал и при первых затруднениях перешёл на Bred (актуальная версия с офсайта для Win2000). Там стоит Unicode и кодировку сменить нельзя (остальное серое). Notepad++ делает крякозябры, Notepad++Mod делает вместо оных либо квадратики либбо какие-то служебные символы.

Однако, если я делаю эксперименты с папкой "123", то результат всё равно тот же.

сменить кодировку консоли: chcp 1251 »
Это просто добавить первой строчкой?

Foreigner
29-10-2015, 12:03
Spooller, Просто в блокноте выберите нужную кодировку (OEM это 866, а 1251 по умолчанию). В консоли же по умолчанию кодировка 866 (т.е. ОЕМ). Если в названиях папок есть кириллица, а батник в 1251, то надо в самом батнике это указать:

@echo off
1>nul chcp 1251

2>nul (pushd "d:\папка" && rmdir /s /q "d:\папка\")
popd

Spooller
29-10-2015, 12:23
Сработало. Вероятно, не хватало первой строчки.
Но в notepad кодировки, кстати, иначе чуть кличут. Как я понимаю, 866=ANSI

Iska
29-10-2015, 12:29
Как я понимаю, 866=ANSI »
Неправильно понимаете. Обычно считается так: OEM/866 и ANSI/1251. Пакетные файлы должно хранить именно в OEM/866 (и Блокнот тут не помощник), и никаких «chcp 1251» без особой на то нужды. Ваш случай уж точно не нуждается.

Spooller
29-10-2015, 12:35
Вы меня запутали. То, что неправильно понимаю по соответствию кодировок - принимается, буду знать.

А вот остальное - совсем не понимаю. Пакетные файлы это cmd и bat? Почему именно в 866? Почему "никаких"? И почему мой не нуждается?

Foreigner
29-10-2015, 12:40
Почему именно в 866? »
Потому, что кодировка в cmd 866, так проще.
И почему мой не нуждается? »
Потому, что его достаточно сохранить в 866. Правда потом могут возникнуть трудности при редактировании, но это проблема редакторов. FAR-овский сам определяет кодировку файла.

Spooller
29-10-2015, 12:44
То есть по сути Вы считаете указание кодировки просто лишней операцией и в этом всё дело?

Foreigner
29-10-2015, 12:47
Если батник в 1251, то указывать необходимо, иначе не получится сделать pushd. Если в 866, то указывать кодировку не надо, т.к. cmd и так в нужной кодировке.

Iska
29-10-2015, 15:40
Пакетные файлы это cmd и bat? »
Да.

Почему именно в 866? »
Так решила Microsoft, что кодовая страница в DOS для СССР будет cp866 (Альтернативная кодировка — Википедия (https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D1%8C%D1%82%D0%B5%D1%80%D0%BD%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BE%D0 %B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0)). В командной строке Windows кодовая страница осталась той же (несмотря на то, что для самой Windows умолчальная кодовая страница — 1251).

Почему "никаких"? »
Если пакетный файл сохранён в кодовой странице OEM/866 — смена кодовой страницы не требуется.

И почему мой не нуждается? »
Потому что он превосходно будет работать и без смены кодовой страницы. Главное — сохранить его в OEM/866.

То есть по сути Вы считаете указание кодировки просто лишней операцией и в этом всё дело? »
У Вас получается аж две лишних операции — пакетный файл в кодировке ANSI/1251 и требующаяся из-за этого смена кодовой страницы в нём.




© OSzone.net 2001-2012