Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd)

Автор: vasiliy74
Дата сообщения: 09.10.2007 16:56
привет есть задача переименовать все файлы в директории из формата 10_01_2006.txt в 2006_01_10.txt ни кто не сталкивался?

Добавлено:
alexvsm
прикольно оч полено!
Автор: 01MDM
Дата сообщения: 09.10.2007 17:50
vasiliy74
Вроде так


Код:
for /f "tokens=1-3 delims=._" %%i in ('dir /b *.txt') do ren %%i_%%j_%%k.txt %%k_%%j_%%i.txt
Автор: vasiliy74
Дата сообщения: 10.10.2007 13:23
01MDM
Супер! я много примененй уже нашол этому циклу
Автор: freeminded
Дата сообщения: 12.10.2007 10:54
Подскажите, реально ли написать авторан для флехи, с которого бы запускался батник?
Например - тыкаю флешку в Юсби и на тебе - запустился батник (сам по себе, так как авторан на установочных дисках).

Я пробывал писать - но у меня получался только авторан контекстным меню вот текст:

[autorun]
shell\readme\command=notepad README.TXT
shell\readme=Read &me
shell\software\command=autoexec.bat
shell\software=Batnik


я пробывал вот так:
[autorun]
open=autoexec.bat


но ничего увы не получалось.
Автор: SAVage22
Дата сообщения: 14.10.2007 20:22
2ALL

Как написать батник чтобы файлы выводились в виде

"C:\xxxxxx\xxxx.xxx"
"C:\dddd\cccc\ccc.xxx"

А то командой
Код: dir /A:-D /B /S > list.txt
Автор: Elroir
Дата сообщения: 14.10.2007 20:28
SAVage22

Код:
for /f "tokens=*" %a in ('dir /b /s /a-d') do @echo "%a">>list.txt
Автор: SAVage22
Дата сообщения: 14.10.2007 21:01
Elroir

Спасибо Вы гений!
Автор: KosarKosta
Дата сообщения: 16.10.2007 08:54
Здравствуйте, я очень недавно начал изучать язык БАТ-фалов. Кое-что я уже могу, а кое-что мне не под силу. Помогите с написанием батника.
Вот есть вирус, который копирует себя в папку, принимая имя самой папки.
Как можно написать батник, чтобы он сканировал, сравнивал имена папки и exe-файла, и если они совпадают, то exe-файлы перемещались бы в заранее созданную папку.
Автор: Grisha_Tamashi_SAN
Дата сообщения: 16.10.2007 09:12

Цитата:
freeminded


Цитата:
Подскажите, реально ли написать авторан для флехи, с которого бы запускался батник?
Например - тыкаю флешку в Юсби и на тебе - запустился батник (сам по себе, так как авторан на установочных дисках).

Я пробывал писать - но у меня получался только авторан контекстным меню вот текст:

----------<SKIP>---------
Смотри мой пост Ссылка
Автор: KapralBel
Дата сообщения: 16.10.2007 09:28
KosarKosta
Лечить вирусы батничками...??? Это круть....


Код: @Echo Off
FOR /R C:\ %%a In (.) Do Call :AV "%%a" "%%~na"
GoTo :EOF


:AV
Set fld=%1
Set fld=%fld:~1%
Set Fld=%fld:~0,-2%
Set FldN=%2
Set FldN=%FldN:~1%
Set FldN=%FldN:~0,-1%
If Exist "%fld%%fldN%.Exe" Move "%fld%%fldN%.Exe" D:\Virus\
GoTo :EOF

Автор: KosarKosta
Дата сообщения: 16.10.2007 17:27
Да вот, приходится пользоваться батниками. Я каспером почти не пользуюсь. Только если появляются новые вирусы, да и то ради того, чтобы посмотреть, где какой заседает. А чистить от вирусов я предпочитаю ручками; а их всех в лицо знаю, а потом все равно приходиться реестр чистить. А вот батники помогают мне ускорить ручной труд. Пока не проверял то, что предложил KapralBel , но все равно заранее спасибо. Собираюсь тестировать мой антивирусный батник со всеми известными мне вирусами. Как протестирую - выложу, а вы, пожалуйста, напишите, где что ни так, или где можно улучшить.
Автор: KosarKosta
Дата сообщения: 17.10.2007 07:57
@Echo Off
FOR /R C:\ %%a In (.) Do Call :AV "%%a" "%%~na"
GoTo :EOF

:AV
Set fld=%1
Set fld=%fld:~1%
Set Fld=%fld:~0,-2%
Set FldN=%2
Set FldN=%FldN:~1%
Set FldN=%FldN:~0,-1%
If Exist "%fld%%fldN%.Exe" Move "%fld%%fldN%.Exe" С:\Virus\
GoTo :EOF

Что-то она не работает. Само сканирование идет, а в папку не переносит.
Похоже, что какие-то ошибки есть: пишет, что такая-то exe не является внешней или внутренней программой.
Может посмотрите почему не работает.
Автор: KapralBel
Дата сообщения: 17.10.2007 09:08
KosarKosta
Сделай 1-й строкой @Echo On и посмотри что именно не нравится

У меня есть глубокое подозрение - что вирус уже сделал свое дело....
Автор: 01MDM
Дата сообщения: 17.10.2007 09:12
KosarKosta
Попробуй мой вариант. Правда работать будет сравнительно медленно

Код:
@echo off
setlocal enabledelayedexpansion
for /r C:\ %%i in (.) do (
set "fld=%%i"
call:check
)
goto:eof
:check
set count=1
:loop
for /f "tokens=%count% delims=\" %%i in ('echo %fld%') do (
if not %%i==. (
set /a count+=1
goto:loop
)
)
set /a count-=1
for /f "tokens=%count% delims=\" %%i in ('echo %fld%') do (
set "file=%%i.exe"
if exist "%fld:~0,-1%!file!" move "%fld:~0,-1%!file!" D:\Virus
)

Автор: Maza Faka
Дата сообщения: 17.10.2007 09:48
KosarKosta
Попробуй так:

Код:
@ECHO OFF
FOR /R C:\TEMP %%A IN (.) DO IF EXIST "%%~FA\%%~NXA.EXE" MOVE "%%~FA\%%~NXA.EXE" D:\CARANTINE
Автор: Senior lecturer
Дата сообщения: 17.10.2007 10:09
Нужно выполнить следующую задачу. При запуске bat-файла необходимо выполнить копирование с сетевого ресурса. Если сеть есть (ПК-источник включен), то проблем никаких. Но если он выключен - bat-ник подвисает, т.к. не может найти IP. Копирую с помощью команды xcopy. Каким образом перед копированием можно выполнить проверку наличия ПК-источника, чтобы потом, при положительном ответе, скопировать данные?
Автор: alexvsm
Дата сообщения: 17.10.2007 10:33
Senior lecturer

Код: ping IP && команда
Автор: KosarKosta
Дата сообщения: 17.10.2007 16:06
Спасибо 01MDM и Maza Faka
Обе программы классно выполняют задачи.

У меня есть просьба к админу.
Можно дать ссылку (хотя бы временную), чтобы сразу скачать все странички (с 1 по 111) в заархивированном виде. Страницы можно в любом виде, лишь бы было читабельно. Много чего можно найти здесь интерестного. Плохо, что страницы у меня открываются медленно. 10 страниц скопировал - 12 м нет.
Автор: KapralBel
Дата сообщения: 17.10.2007 16:49
KosarKosta

Версия для печати подойдет?
Автор: Arckon
Дата сообщения: 17.10.2007 19:36
Вот такая проблема:
Нужно в имени файла выделить первую последовательность цифр. Примеры:
"filename001.txt" -> "001"
"12filename.345_fg.txt" -> "12"
"as1s2d3" -> "1"
"dash8746234" -> "8746234"

Возможно такое сделать? Второй час уже убиваю на это дело, даже не знаю, как подступиться.
Автор: 01MDM
Дата сообщения: 17.10.2007 20:36
Arckon
Поясни, что значит "выделить"?
Автор: KosarKosta
Дата сообщения: 18.10.2007 08:09
Спасибо KapralBel
Кстати, разобрался. Твой вариант тоже работает.
Автор: Maza Faka
Дата сообщения: 18.10.2007 08:19
Arckon

Цитата:
выделить первую последовательность цифр

Можно при помощи SED, но вот синтаксиса этой утилиты я не знаю
Автор: KosarKosta
Дата сообщения: 18.10.2007 16:12
Помогите, плиз, чайнику немного разобраться с командами.
Как обозначить "любая\ые папки"
Вот, напр., в какой-то папке находится батник, в которой также находится n папок.
Я, напр., хочу чтобы этот батник скопировал себя в эти папки.
copy %0 "любая\ые папки" , т.е. скопировать саму себя в "любая\ые папки"
Если
Set dir=%1
copy %0 %1 (или %dir%)
то не получается
Или без цикла не обойтись?
если да, то как это примерно будет выглядеть.
Автор: KapralBel
Дата сообщения: 18.10.2007 16:18
KosarKosta
FOR /?
часть FOR /R
Автор: Smitis
Дата сообщения: 18.10.2007 21:35
Maza Faka

Цитата:
Можно при помощи SED, но вот синтаксиса этой утилиты я не знаю

http://www.csa.ru/CSA/tutor/sed/index.htmr
Автор: KosarKosta
Дата сообщения: 19.10.2007 13:54
Не, мне пока самому вряд ли составить.
Потому прошу помочь чисто в ознокомительных целях.
Мне не понятно как обозначить "любая папка" в текущей папке
Автор: KapralBel
Дата сообщения: 19.10.2007 14:05
KosarKosta

Код: @Echo Off
FOR /R e:\Work\HomeComp %%a in (.) Do Copy %0 "%%a"
Автор: KosarKosta
Дата сообщения: 19.10.2007 17:36
Аааа, Понятно.
Т.е. если в наборе точка, то в качестве переменных будут выступать папки.
Уже немного начинаю врубаться в циклы.
Спасибо, я почитал и вот сам составил полезный батник (давно мечтал)
Он сортирут по папкам файлы по расширениям (помню целую неделю сортировал руками).
НО, его недостаток в том, что если он копирует одинаковый файл, то он его перезаписывает. Т.е. в папке оказывается последний скопированный повторный файл.
Помогите дописать (или составить другую), чтобы в скопированной папке оставался только файлы с более поздней (новой) датой.
Так решится 2-я проблема с повторяющимися файлами.

@echo off
md _DOC
md _TXT
md _FILMS
md _CHM
md _DJVU
md _INTERNET
md _PICS
md _PDF
md _ARCH
md _SOUND
md _TEMP
For /R %%a in (*.doc;*.rtf) do copy %%a \_DOC
For /R %%a in (*.txt) do copy %%a \_TXT
For /R %%a in (*.chm) do copy %%a \_CHM
For /R %%a in (*.djvu) do copy %%a \_DJVU
For /R %%a in (*.htm;*.jhtml;*.mht;*.php;*.php3;*.phtm;*.sht;*.shtm;*.url;*.xml) do copy %%a \_INTERNET
For /R %%a in (*.bmp;*.gif;*.ico;*img;*.jpg;*.jpeg;*.pcx;*.pic;*.png;*.tif;*.tiff) do copy %%a \_PICS
For /R %%a in (*.pdf) do move %%a \_PDF
For /R %%a in (*.7z;*.ace;*.arj;*.gz;*.jar;*.pk3;*.r0?;*.rar;*.tar;*.zip) do copy %%a \_ARCH
For /R %%a in (*.cda;*.med;*.mid;*.midi;*.mp3;*.ogg;*.wav;*.wma) do copy %%a \_SOUND
For /R %%a in (~*.*;*.~~~;$*.*;*.$??;*.bak;*.log;*.old;*.org;*.pk;*.swp;*.tmp;*.temp;*.wbk) do copy %%a \_TEMP
For /R %%a in (*.avi;*.divx;*.mpe*;*.mpg;*.mpg4;*.mov;*.vob;*.wmv) do copy %%a \_FILMS

Я на всякий случай написал COPY, а не MOVE, п-ч удалить можно всегда.
Автор: Elroir
Дата сообщения: 19.10.2007 18:39
KosarKosta

Цитата:
чтобы в скопированной папке оставался только файлы с более поздней (новой) датой

Вместо copy, используй xcopy с ключами "/D /Y".
Смотри "xcopy /?".

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

Предыдущая тема: Problemi s zagruzkoy XP!


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.