IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   BAT File для переименования файлов (http://www.imho.ws/showthread.php?t=21865)

DJLOVE 04.02.2003 02:28

BAT File для переименования файлов
 
Есть 250 файлов , надо файлик bat чтоб переименовал окончания Jpg в rar

:):xex:

Комментарий Модератора:
Borland:
Дополнительно:
Важно: Автоматическое переименование группы файлов/папок

denver 04.02.2003 05:18

Если интересует только конкретный случай то просто:
ren *.jpg *.rar

Если все же интересно как по другому:
for %f in (*.jpg) do ren %f *.rar
(если вызывать НЕ из батника, а из коммандной строки то надо писать %%f)

P.S. Нет, наоборот. %%f это когда из батника.

Isalex 04.02.2003 11:28

to Denver

а где можно достать систакс всех команд Batch???
Или хотябы подробное описание части из них???

denver 04.02.2003 14:16

Isalex
Если у тебя ХР то найди на диске с виндой файл ntcmds.chm там все в принципе + расширенные комманды для ХР (могу его русский тебе заслать если надо). А вообще все эти комманды тянутся еще из MS DOS и таких книжек в инете уже практически нет. Вот здесь нашел далеко не полный список комманд. А вообще описание любой комманды можно посмотреть в коммандной строке запустив:
комманда /?

Isalex 05.02.2003 06:48

Спасибо, но меня в принципе интересуют не столько сами команды, сколько обозначеня переменных и разных ключей, как например - %f , %1 , %PATH%.
В принципе, все на интуйтивном уровне понимается, но хотельсь бы иметь более подробное описание этих вещей.

denver 05.02.2003 07:40

Isalex
К сожалению литературы конкретно по переменным среды имхо нигде нет. Кроме как в мануалах по всем коммандам. Потому что имхо это можно описать всего на двух страницах если уже совсем подробно расжевывать.
Вкратце:

%1, %2, ... это переменные содержащие параметры запуска батника (параметры следуют в коммандной строке за батником, разделяются пробелами и могут быть чем угодно, числом, именем файла и т.д.)

%temp%, %windir% ... - переменные среды которые задаются в autoexec.bat (или еще где) коммандой set %windir%="c:\windwos\"

%f, %b, %a - все остальные неиспользуемые "регистры" используются в бат файлах или просто из коммандной строки с коммандой for

errorlevel - обычно программы (либо батники если в них есть комманды set errorlevel=0) возвращают 0 в случае удачного завершения и другое число если нет. Для проверки короче, например:

scandisk c: /f
if errorlevel==1 goto error
scandisk d:/f
if errorlevel==1 goto error
goto exit
:error
echo Произошла ошибка, fuck off
:exit

vadian 15.03.2003 20:03

Тока Windows XP команду move не поддерживает. Я из-за этой бодяги часа 4 один раз потерял...

denver 15.03.2003 20:27

vadian
У кого не поддерживает, а у кого и поддерживает (если hands.dll настроить) :)

helldomain 29.03.2003 07:38

Da. Glawnoe ubrat iz sistemi draiwer krivie_ruchki.sys ;-))).

list_id 22.05.2003 11:57

Цитата:

for %f in (*.jpg) do ren %f *.rar
Лучше так:
for %f in (*.jpg) do ren "%f" *.rar
(кавычки добавлены для того, чтобы обрабатывались файлы, имена которых содержат пробелы)
Цитата:

(если вызывать НЕ из батника, а из коммандной строки то надо писать %%f)
На Вин2000 в бат-файле эта строка выглядит так: (с одним % - не работает)
for %%f in (*.jpg) do ren "%%f" *.rar

А если надо не переименовать все jpg в rar, а сжать каждый jpg в свой rar (что логичнее), то команда принимает вид:
for %%f in (*.jpg) do rar a "%%f.rar" "%%f"

uroboros 25.05.2003 13:25

Великий скрипт великого Ларри Волла (Larry Wall).

Код:

eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
    & eval 'exec perl -S $0 $argv:q'
    if 0;

$0 =~ s#.*/([^/]+)$#$1#;
if (@ARGV < 2)
{
    print "Usage:\n\t$0 <perl_expression> <files...>\n\n";
    print "Examples:\n";
    print "\t$0 's/\.orig\$//' *.orig\n";
    print "\t$0 'y/A-Z/a-z/ unless /^Make/' *\n";
    print "\t$0 '\$_ .= \".bad\"' *.f\n";
    print "\t$0 'print \"\$_: \"; s/foo/bar/ if <stdin> =~ /^y/i' *\n";
    exit;
}

$op = shift;
for (@ARGV)
{
    $was = $_;
    eval $op;
    die $@ if $@;
    rename($was,$_) unless $was eq $_;
}


i1cho 28.10.2004 04:08

Есть проблема, надо переехать с 98 на w2k. bat'ники на w2k не пашут
,говорят шо надо файлы cmd использовать, Подскажите де про них почитать плз. :confused:

denver 28.10.2004 10:11

i1doc
батники работают под любой виндой, а cmd это тот-же bat только с другим расширением.

Gem Single 28.10.2004 12:04

Кстати, для тех, кто не знает. И в Win2k, и в WinXP есть команда "help".
А если нужен help по конкретной команде, например, "set", то нужно вызвать "help set". Ну оччень подробно все расписано. А в русской винде даже по-русски. :beer:

i1cho 29.10.2004 18:16

А кто подскажет, какая прога выполняет файлы cmd. (если данный вопрос коректен)

mosh 29.10.2004 19:19

i1doc Есть в windows такая: cmd.exe

i1cho 03.12.2004 14:54

Вопрос по комманду exist
 
Шото не работает команда exist (проверяет наличие файлов) в w2k :confused: , шо делать не пойму ???, сам батник 100% рабочий (под 98 виндой правда)

denver 03.12.2004 15:46

i1doc
exist это не комманда, а параметр команды if, набери if /? там все написано. Или приведи сюда то что там написано если нет exist.

i1cho 03.12.2004 15:59

спасибо шо обяснили убогому :)
 
строка такая
if exist E:\путь\*.* h:\папка\програмка.exe
весь фикус в том что по барабану, есть файлы, или нет - програмка запускается :(
-------------------------------
В прцессе разборов выяснилось то если вместо E:\путь\*.* прописать E:\путь\*.txt- то все работает :confused: вариант E:\путь\*.??? - тож не работает, как же маску задать млин - файлы то все нужно ловить.

denver 03.12.2004 22:56

i1doc
Приведи строку точнее, что вызываешь. Только не по памяти, а именно то что не работает. Мало ли. Если это в батнике то строку из батника плиз, лучше весь.

-------------------------------------------------
Ха! Догнал. Под *.* попадают также каталоги, включая . и .. (т.е. текущий каталог и родительский). Ну вобщем if exist *.* сработает даже в пустом каталоге. Как решить ща подумаю...

-------------------------------------------------
Хм.. может и не самое лакоичное решение но работает (во всяком случае это уже во всех версиях винды должно). Пример батника:
Код:

@echo off
for %%f in (%1\*.*) do goto dosomething
exit

:dosomething
echo В каталоге "%1" содержится как минимум один файл

Запускать с именем папки (то бишь например dosomething.bat E:\Папка\).

i1cho 06.12.2004 16:57

denver
 
Батник делался давно и никто не помнит кем ... :) смысл его, облегчить нам работу. Батник шарится по папкам и проверяет наличие там файлов,файлы там бывают самые разные и шо сними делать приходиться думать и потом раскладывать руками....
...
if exist h:\mailbox\q901\*.* h:\tm-bat\Mess "есть почта в ящике 1"
if exist h:\mailbox\q917\*.* h:\tm-bat\Mess "есть почта в ящике 2"
if exist h:\mailbox\q903\*.* h:\tm-bat\Mess "есть почта в ящике 3"
if exist h:\mailbox\q904\*.* h:\tm-bat\Mess "есть почта в ящике 4"
...
всего там порядка 200 проверок папок...

з.ы. Mess - ето маленикий екзешник, который параметр в кавычках вываливает на экран(типа месачбокса)

Ghost 06.12.2004 17:20

Сделай так:
файл folders.dat
Код:

h:\mailbox\q901|h:\tm-bat\Mess "есть почта в ящике 1"
h:\mailbox\q917|h:\tm-bat\Mess "есть почта в ящике 2"
h:\mailbox\q903|h:\tm-bat\Mess "есть почта в ящике 3"
h:\mailbox\q904|h:\tm-bat\Mess "есть почта в ящике 4"

файл check.cmd
Код:

@for /f "tokens=1* delims=|" %%i in (folders.dat) do @call verify.cmd %%i "%%j"
файл verify.cmd
Код:

@echo off
for %%f in (%1\*.*) do goto isfile
goto ready
:isfile
cmd /c %2
:ready

Запускать - check.cmd

i1cho 06.12.2004 19:58

Спасибо огромное камрады-форумчане, не бросили в беде :beer: все заработало.
... тут начал развивать свой командный файл и возникла мысль месаги которые создаются при выполнении файла закатывать в файл текстовый, смутно помню шо можно ето сделать сомандой "copy" но никак не не получается... :idontnow: подскажите плз

Ghost 06.12.2004 20:02

i1doc
"команда" "параметры" > "имя_файла" - результат выполнения команды заносится в файл (если нет - создается, если есть - очищается)
"команда" "параметры" >> "имя_файла" - результат добавляется к концу существующего файла (если файла нет - создается)
например:
echo 1st line > result.txt
echo 2nd line >> result.txt

Premium 24.10.2005 22:44

Ничего, если в этой теме спрошу, чтоб ради простого вопроса новую не создавать? Как из батника написать "!"(восклицательный знак), если использую enabledelayedexpansion? Битый час бьюсь с семиколонами-кавычками-процентами

@ECHO OFF & SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
ECHO OOOPS !!!>TEST.TXT
ENDLOCAL

Вызвать другой батник и им записать, сделать endlocal и записать "!", потом опять включить enabledelayedexpansion - это все понятно, но может есть обычная простая метода, а я ее просто не знаю?

LightImage 25.10.2005 12:44

Можно переменную создать до включения ENABLEDELAYEDEXPANSION:
Код:

@set my=!
@ECHO OFF & SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
ECHO OOOPS !my!>TEST.TXT
ENDLOCAL



Часовой пояс GMT +4, время: 21:42.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.