PDA

Показать полную графическую версию : Батник для чтения/записи


djalin
06-03-2012, 00:28
Хочю разобратся - так как у самого не выходит - для начала решил нагенерить файлов - ети файлы и будут заносится в лог с которого батник должен считывать но

:begin ping 127.0.0.1 -n 4 >%temp%\01_%random%_01.log goto begin
не хочет выполнятся, даже с консоли.. в чем может быть проблема?


задача скрипта - делает список файлов вместе с путями, потом переименовывает папку в заданую, суть в том что имя папки зарание не извесно

Iska
06-03-2012, 01:08
в чем может быть проблема? »
djalin, в синтаксисе.

:begin
ping 127.0.0.1 -n 4 >"%temp%\01_%random%_01.log"
goto :begin

Будет исполняться, пока не прервёте по «Ctrl-C».

djalin
08-03-2012, 20:38
вопрос как можно переименовать папку в названии которой есть определенный символ
проблема в том что зарание название папки неизвесно - например нужно переименовать папку в имени которой есть символ ~

Iska
08-03-2012, 23:28
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 Мама мыла раму
а не только с теми, у которых в именах присутствует данный символ.

Уточните Вашу задачу.

djalin
09-03-2012, 19:57
Задача - переименовать папки с неправильными символами в имени в рандомно поименованые
(такое нужно например если папка спрятана вирусом)

сейчас скрипт имеет вид

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

нужно добавить переименования таких папок (они не отображаются в проводнике именно из-за таких символом)

Iska
09-03-2012, 20:18
Сделаем все объекты текущей папки и вложенных в неё не скрытыми, не системными и не только для чтения:
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
10-03-2012, 13:36
Может Вы правы сам я ещо не сталкивался и руководствовался этой статьей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)

Iska
10-03-2012, 22:16
забыл предупредить все действия проводятся касательно флеш накопителя - там ето дествительно некчему так что ирония немного неумесна »
По коду этого не скажешь: нигде в коде нет проверки, что текущий каталог является корневым каталогом съёмного устройства.

Далее -вот зачем на флешке ярлык? »
У кого как ;).

и руководствовался этой статьей Вирус скрыл папки на флешке, решение проблемы !!!. | Блог программиста 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"

Чтобы дать ответ по переименованию, мне нужно как-то увидеть эту папку в оригинале. Каким вирусом она создаётся (можно привести ссылку на описание на любом антивирусном сайте)?

djalin
11-03-2012, 17:07
Ага - ну тогда наверно пока статью можно закрыть - так как лично он мне не попадался.
Спасибо
батник решил просто дополнить командой dir




© OSzone.net 2001-2012