Показать полную графическую версию : Батник для чтения/записи
Хочю разобратся - так как у самого не выходит - для начала решил нагенерить файлов - ети файлы и будут заносится в лог с которого батник должен считывать но
:begin ping 127.0.0.1 -n 4 >%temp%\01_%random%_01.log goto begin
не хочет выполнятся, даже с консоли.. в чем может быть проблема?
задача скрипта - делает список файлов вместе с путями, потом переименовывает папку в заданую, суть в том что имя папки зарание не извесно
в чем может быть проблема? »
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 — для Вас было б больше пользы, чем так махать шашкой.
они не отображаются в проводнике именно из-за таких символом »
В отношении символа «~» — Вы неправильно информированы.
Задача - переименовать папки с неправильными символами в имени в рандомно поименованые »
Приведите конкретные примеры папок «с неправильными символами в имени», которые бы не отображались в Проводнике.
Может Вы правы сам я ещо не сталкивался и руководствовался этой статьейhttp://acid.name/?p=108
Потрясающе…
забыл предупредить все действия проводятся касательно флеш накопителя - там ето дествительно некчему :) так что ирония немного неумесна
avz - не всегда запускается, и откуда Вы взяли что я его не использую?
Далее -вот зачем на флешке ярлык? я не знаю - касательно наивности, защита не сработала только 1! раз так что пока действенность меня устраивает
да я мало знаю о программировании, но часто самое простое решение очень действенно, а самое простое решение работает тогда когда остальное просто не запускается.
Если же Вы знаете как лучше - я весь обратился в слух - именно для этого я здесь.
Foreigner
10-03-2012, 16:47
например нужно переименовать папку в имени которой есть символ »
@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)
забыл предупредить все действия проводятся касательно флеш накопителя - там ето дествительно некчему так что ирония немного неумесна »
По коду этого не скажешь: нигде в коде нет проверки, что текущий каталог является корневым каталогом съёмного устройства.
Далее -вот зачем на флешке ярлык? »
У кого как ;).
и руководствовался этой статьей Вирус скрыл папки на флешке, решение проблемы !!!. | Блог программиста Acid`a (http://acid.name/?p=108) »
В статье ошибка:
На картинке видно скрытую папку с названием 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
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.