- 1
- 2
cd TempDir
del /f /q /s *
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+66
cd TempDir
del /f /q /s *
Когда-то давно написал батник для автоматизации каких-то работ по удалению временных файлов. Там были переходы посложнее между папками, чем сдесь, но для илюстрации соли фейла подойдет и это.
Однажды моё предположение о существовании некоторых папок неоправдалось. И некоторые из комманд типа cd TempDir сфейлили. Естественно, на ошибки результат их выполнения я не проверял и при ерроре не выходил из батника. Запустил я в тот роковой день батник и смотрю - что-то очень долго удаляется директория временных файлов...
Подскос пошёл весь логический диск с данными. :D
В результате той комбинации не сфейлевших комманд cd текущем каталогом оказался корневой каталог диска.
Естественно, батник до наших дней не дошёл, тк был на этом логическом диске и слава богу. :D
guest 18.12.2010 15:26 # +2
Вот сдесь бы исключения пригодились.
Dummy00001 19.12.2010 14:31 # +2
хотя для случая вверху, правильней было бы пользоваться абсоютными путями и выкинуть `cd` полностью.
burdakovd 18.12.2010 15:54 # +3
А ещё более опасно игнорировать ошибки (как это часто делается по умолчанию в скриптах)
Выходы (наверняка все знают, но на всякий случай выскажу):
1) везде явно указывать имя директории, не полагаясь на текущую
2) после cd делать "&&", или "|| exit"
Первый способ надежнее, так как при копипасте фрагментов кода текущей директорией может оказаться что угодно=)
А вообще жутко. И почему по умолчанию строки скрипта не соединяются как через &&, то есть выполнять следующую строку только после успешного выполнения предыдущей? В большинстве случаев именно такое поведение и нужно, а когда нужно игнорировать ошибку, никто не мешает сделать "|| true"
guest 18.12.2010 15:57 # 0
Так можно в батниках? Спасибо! :)
burdakovd 18.12.2010 16:04 # +1
Так что в реальности под виндой могут быть проблемы и с "||", "&&" и с exit.
Ну и вообще менять текущую директорию нехорошо, так как после запуска батника из cmd в самой командной строке тоже текущая директория изменится.
Вот, вспомнил.
Внезапной подставой оказалось то, что по умолчанию exit завершает не батник, а текущий сеанс cmd.
То есть если батник запущен из командной строки, то, вместо того, чтобы показать ошибку, окно cmd внезапно закрывается.
Оказалось, нужно делать exit /B
guest 18.12.2010 17:47 # +3
Lure Of Chaos 18.12.2010 20:31 # −3
TarasB 18.12.2010 20:43 # +6
Lure Of Chaos 19.12.2010 00:33 # +1
guest 19.12.2010 00:40 # −2
bober_maniac 18.12.2010 21:28 # 0
guest 18.12.2010 22:05 # −3
bober_maniac 18.12.2010 22:07 # +3
В принципе, с пришествием PowerShell они искупили свою ошибку.
bugmenot 18.12.2010 22:16 # +1
чота по-моему рановато
поскольку PS придумали при существующем WSH
так что возможно будет и еще админское средство, пропагандирующее другую технологию изобретенную MS
Анонимус 19.12.2010 00:34 # +1
искупили
вместо того, что бы наконец сделать как во всех остальных операционках стандартно, общепризнанно и удобно -- как всегда изобрели свой велосипед
bober_maniac 19.12.2010 00:35 # −4
Нужен вам баш - ставьте баш, проблем то.
Анонимус 20.12.2010 00:42 # +3
>> как в 1%
как в практически во всех остальных операционках от соляриса до опенбзд
>> и Мак Осе, построенном на ядре фрибзд
причем мак к фрибзд?
и ядро там ВООБЩЕ не бздшное
и уж тем более не фряшное
>>и унаследовавшей от нее баш?
баша нет во фре как-бы
там сиш по умолчанию и ш
Вы нихера не отличаете баш от ш
линукс от фрибзд
фрибзд от драгофлай бзд
итд
совет на будущее: не говорите про то, в чем не разбираетесь.
не будете выглядеть шлололошным ламером, как сейчас)))
Анонимус 19.12.2010 00:33 # −2
и продумано оно не в линукс, а в позикс/юникс
в линукс взято именно оттуда, и в дос тоже
но пиша дос, они думали о том, как сделать хоть что-то рабочее, да еще и на первом ibm pc) потому взяли из униксов только то, что осилили)
bugmenot 19.12.2010 00:55 # +2
киса, ку-ку
System/360
RTFM
guest 21.06.2013 06:56 # 0
guest 21.06.2013 08:32 # 0
komprenda 18.12.2010 16:28 # −21
komprenda 19.12.2010 15:21 # −5
Xander_Bass 21.12.2010 00:02 # 0
guest 21.12.2010 00:03 # 0
alexmsk 20.01.2011 01:07 # +2
guest 04.08.2011 19:59 # +1