Батник для чтения/записи
Хочю разобратся - так как у самого не выходит - для начала решил нагенерить файлов - ети файлы и будут заносится в лог с которого батник должен считывать но
Код:
:begin ping 127.0.0.1 -n 4 >%temp%\01_%random%_01.log goto begin
не хочет выполнятся, даже с консоли.. в чем может быть проблема?
задача скрипта - делает список файлов вместе с путями, потом переименовывает папку в заданую, суть в том что имя папки зарание не извесно
|
Цитата:
Цитата djalin
в чем может быть проблема? »
|
djalin, в синтаксисе.
Код:
:begin
ping 127.0.0.1 -n 4 >"%temp%\01_%random%_01.log"
goto :begin
Будет исполняться, пока не прервёте по «Ctrl-C».
|
вопрос как можно переименовать папку в названии которой есть определенный символ
проблема в том что зарание название папки неизвесно - например нужно переименовать папку в имени которой есть символ
|
djalin, если у Вас не отключено создание коротких имён:
Код:
E:\Песочница\0125>fsutil.exe behavior query disable8dot3
disable8dot3 = 0
— этот символ присутствует в коротких именах всех папок с длинными именами:
Код:
E:\Песочница\0125>dir /a:d /x
…
Содержимое папки E:\Песочница\0125
08.03.2012 22:25 <DIR> .
08.03.2012 22:25 <DIR> ..
08.03.2012 22:19 <DIR> 001
08.03.2012 22:19 <DIR> 003
08.03.2012 22:19 <DIR> 005
08.03.2012 22:19 <DIR> 00~2
08.03.2012 22:19 <DIR> 00~4
08.03.2012 22:19 <DIR> Goodies
08.03.2012 22:25 <DIR> SAMPLE~1 Sample folder
08.03.2012 22:20 <DIR> 01D5~1 Мама мыла раму
а не только с теми, у которых в именах присутствует данный символ.
Уточните Вашу задачу.
|
Задача - переименовать папки с неправильными символами в имени в рандомно поименованые
(такое нужно например если папка спрятана вирусом)
сейчас скрипт имеет вид
Код:
attrib -r -s -h /s /d
rd /s /q %~d0\recycled
rd /s /q %~d0\recycler
rd /s /q «%~d0\System Volume Information
del %~d0\*.lnk /s /q >>kiler_log.txt
del /f /q %~d0\autorun.*
mkdir "\\?\%~d0\autorun.inf\com1"
attrib +s +h %~d0\autorun.inf
del /f /q %~d0\desktop.ini
mkdir "\\?\%~d0\desktop.ini\com1"
attrib +s +h %~d0\desktop.ini
нужно добавить переименования таких папок (они не отображаются в проводнике именно из-за таких символом)
|
Потрясающе…
Сделаем все объекты текущей папки и вложенных в неё не скрытыми, не системными и не только для чтения:
Код:
attrib -r -s -h /s /d
Попробуем удалить к … «Корзину» целиком:
Код:
rd /s /q %~d0\recycler
Рискнём удалить и системную папку (действительно — зачем она нам нужна, болтается только):
Код:
rd /s /q «%~d0\System Volume Information
Ярлыки на этом диске нам тоже ни к чему:
Код:
del %~d0\*.lnk /s /q
Сделаем наивную попытку «защиты» от вируса:
Код:
mkdir "\\?\%~d0\autorun.inf\com1"
attrib +s +h %~d0\autorun.inf
del /f /q %~d0\desktop.ini
mkdir "\\?\%~d0\desktop.ini\com1"
Больше калечим, чем лечим. Уж лучше бы Вы освоили язык скриптов AVZ — для Вас было б больше пользы, чем так махать шашкой.
Цитата:
Цитата djalin
они не отображаются в проводнике именно из-за таких символом »
|
В отношении символа «~» — Вы неправильно информированы.
Цитата:
Цитата djalin
Задача - переименовать папки с неправильными символами в имени в рандомно поименованые »
|
Приведите конкретные примеры папок «с неправильными символами в имени», которые бы не отображались в Проводнике.
|
Может Вы правы сам я ещо не сталкивался и руководствовался этой статьей http://acid.name/?p=108
забыл предупредить все действия проводятся касательно флеш накопителя - там ето дествительно некчему :) так что ирония немного неумесна
avz - не всегда запускается, и откуда Вы взяли что я его не использую?
Далее -вот зачем на флешке ярлык? я не знаю - касательно наивности, защита не сработала только 1! раз так что пока действенность меня устраивает
да я мало знаю о программировании, но часто самое простое решение очень действенно, а самое простое решение работает тогда когда остальное просто не запускается.
Если же Вы знаете как лучше - я весь обратился в слух - именно для этого я здесь.
|
Цитата:
Цитата djalin
например нужно переименовать папку в имени которой есть символ »
|
Код:
@echo off
setlocal
for /f "tokens=*" %%i in (' "dir /b /ad | findstr "~"" ') do call:ren "%%i"
goto:eof
:ren
set "folder=NewName"
:check
if not exist "%folder%" (ren %1 "%folder%") else (set "folder=0%folder%" && goto:check)
|
Цитата:
Цитата djalin
забыл предупредить все действия проводятся касательно флеш накопителя - там ето дествительно некчему так что ирония немного неумесна »
|
По коду этого не скажешь: нигде в коде нет проверки, что текущий каталог является корневым каталогом съёмного устройства.
Цитата:
Цитата djalin
Далее -вот зачем на флешке ярлык? »
|
У кого как ;).
В статье ошибка:
Цитата:
На картинке видно скрытую папку с названием e2e2~1
|
На самом деле, название папки — что-то наподобие «..» — видно на приведённом скриншоте, а «e2e2~1» — это как раз её короткое имя. Но переименовывать все найденные папки с символом «~» в коротком имени — значит лишиться оригинальных имён всех папок с длинными именами в этом каталоге.
Ещё раз повторю: к отображению в Проводнике символ тильды в имени не имеет никакого отношения. Ни в длинном, ни в коротком имени. Проблема именно в оригинальном длинном имени папки. Это как раз что-то наподобие Вашего:
Код:
mkdir "\\?\%~d0\autorun.inf\com1"
attrib +s +h %~d0\autorun.inf
del /f /q %~d0\desktop.ini
mkdir "\\?\%~d0\desktop.ini\com1"
Чтобы дать ответ по переименованию, мне нужно как-то увидеть эту папку в оригинале. Каким вирусом она создаётся (можно привести ссылку на описание на любом антивирусном сайте)?
|
Ага - ну тогда наверно пока статью можно закрыть - так как лично он мне не попадался.
Спасибо
батник решил просто дополнить командой dir
|
Время: 01:39.
© OSzone.net 2001-