Компьютерный форум 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=307230)

Spooller 28-10-2015 19:00 2569136

Подскажите по батнику, который будет удалять всё содержимое папки по расписанию
 
ОС WinServer 2000
Вариант:
Код:

cmd.exe pushd "d:\папка\" && (rmdir /s /q "d:\папка\" & popd) 2>nul
отлично работает, если его запускать из cmd вручную. Но не пашет, если сделать его в файле и запускать файл. Что ему не так?

Iska 28-10-2015 19:52 2569152

Цитата:

Цитата Spooller
Но не пашет, если сделать его в файле и запускать файл. Что ему не так? »

Упакуйте этот файл в архив, приложите архив к сообщению.

Spooller 29-10-2015 11:00 2569328

Вложений: 1
Вот. Спасибо за участие.Файл 130400

Foreigner 29-10-2015 11:12 2569330

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

Spooller 29-10-2015 11:38 2569338

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

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

Цитата:

Цитата Foreigner
сменить кодировку консоли: chcp 1251 »

Это просто добавить первой строчкой?

Foreigner 29-10-2015 12:03 2569349

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 2569357

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

Iska 29-10-2015 12:29 2569359

Цитата:

Цитата Spooller
Как я понимаю, 866=ANSI »

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

Spooller 29-10-2015 12:35 2569361

Вы меня запутали. То, что неправильно понимаю по соответствию кодировок - принимается, буду знать.

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

Foreigner 29-10-2015 12:40 2569364

Цитата:

Цитата Spooller
Почему именно в 866? »

Потому, что кодировка в cmd 866, так проще.
Цитата:

Цитата Spooller
И почему мой не нуждается? »

Потому, что его достаточно сохранить в 866. Правда потом могут возникнуть трудности при редактировании, но это проблема редакторов. FAR-овский сам определяет кодировку файла.

Spooller 29-10-2015 12:44 2569366

То есть по сути Вы считаете указание кодировки просто лишней операцией и в этом всё дело?

Foreigner 29-10-2015 12:47 2569367

Если батник в 1251, то указывать необходимо, иначе не получится сделать pushd. Если в 866, то указывать кодировку не надо, т.к. cmd и так в нужной кодировке.

Iska 29-10-2015 15:40 2569430

Цитата:

Цитата Spooller
Пакетные файлы это cmd и bat? »

Да.

Цитата:

Цитата Spooller
Почему именно в 866? »

Так решила Microsoft, что кодовая страница в DOS для СССР будет cp866 (Альтернативная кодировка — Википедия). В командной строке Windows кодовая страница осталась той же (несмотря на то, что для самой Windows умолчальная кодовая страница — 1251).

Цитата:

Цитата Spooller
Почему "никаких"? »

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

Цитата:

Цитата Spooller
И почему мой не нуждается? »

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

Цитата:

Цитата Spooller
То есть по сути Вы считаете указание кодировки просто лишней операцией и в этом всё дело? »

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


Время: 18:56.

Время: 18:56.
© OSzone.net 2001-