Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2

Модерирует : gyra, Maz

Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

   

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
(часть 1)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 5
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Курс лекций для начинающих. Полезно и просто описано
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
· Уильям Станек - Командная строка Microsoft Windows (вплоть до w2k3)
· Простой способ получать текущую дату всегда в одном формате (не зависит от языков и настроек)
 
Старая версия первого сообщения

Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 12:08 19-11-2007 | Исправлено: Dmitriy05, 22:49 13-04-2008
lid111

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM

Цитата:
lid111  
 
Цитата:Задача: в папке A на разных уровнях вложенности, находятся папки C, D, E, F. Надо удалить их вместе с содержимым.  
 
 
 
 
Код:  
@echo off  
pushd "a"  
for %%i in (C D E F) do (  
    for /r /d %%j in (*) do if /i "%%~nxj"=="%%i" rd /s /q "%%j"  
)  
popd  
 

А если оставить сами папки, но удалить из них файлы, тогда как?
 
Добавлено:
Возможен ли батник, изменяющий в Windows местоположение папок "Мои документы" для всех пользователей компа, с переносом, конечно же, содержимого папок?
Новый адрес папки "Мои документы" для каждого пользователя должен выглядеть так: "D:\ Документы_Имя учетной записи". То есть при учетных записях "Вася" и "Петя" на диске D должны образоваться две папки: "Документы Вася" и "Документы Петя", заполненные соответственно их документами.
На всякий случай добавлю, что батник должен нормально отрабатывать и на русской, и на английской винде (т. е. исходная папка в Windows может иметь разные названия (рус. и англ.).

Всего записей: 1547 | Зарегистр. 15-09-2006 | Отправлено: 02:39 14-09-2008 | Исправлено: lid111, 02:48 14-09-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM, спасибо всё работает.
 
Добавлено:
 
Как то вы мне помогли написать этот бат:  

Код:
@echo off  
setlocal  
 
set "toChange=12345"  
set "changeTo=54321"  
 
gsar -s%toChange% -r%changeTo% -o test.txt

Если в test.txt находит 12345 переписывает в 54321, работает он прекрасно.  
 
Его нужно поправить, надо что бы %changeTo% брался из стороннего файл   . Тоесть, находит "12345" и заменяет его содержимом 1.txt

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 14:21 14-09-2008 | Исправлено: XXXXL, 23:52 14-09-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XXXXL

Цитата:
Его нужно поправить, надо что бы %changeTo% брался из стороннего файла

Если в 1.txt только одна строчка со значением переменной. Или должны быть дополнительные условия.

Код:
 
@echo off  
setlocal  
 
set "toChange=12345"  
set /p changeTo=<1.txt  
 
gsar -s%toChange% -r%changeTo% -o test.txt
 

 
 
 
Добавлено:
lid111

Цитата:
А если оставить сами папки, но удалить из них файлы, тогда как?

Удалить содержимое только в самой папке или еще во всех подпапках?

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 05:10 15-09-2008 | Исправлено: 01MDM, 05:24 15-09-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM, Спасибо, спасибо и еще раз спасибо!

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 17:28 15-09-2008
lid111

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
01MDM, да, во всех подпапках, оставить пустыми только внешние папки (в моем примере - C, D, E, F)

Всего записей: 1547 | Зарегистр. 15-09-2006 | Отправлено: 22:29 15-09-2008
28Diman89

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем привет, снова нужна помощь
задача следующая: в некоторой папке есть множество разноименных архивов формата zip. Файлы в архивах разные, но могут и попасться одинаковые. Можно ли как нибудь распаковать все архивы с перезаписью одноименных файлов?
просьба выложить код полностью т.к. в командной строке сам оч мало понимаю, а лучше с подроюностями, где что и для чего...
выручайте

Всего записей: 9 | Зарегистр. 29-08-2008 | Отправлено: 00:37 16-09-2008
01MDM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lid111

Цитата:
да, во всех подпапках, оставить пустыми только внешние папки (в моем примере - C, D, E, F)

 

Код:
 
@echo off
pushd "a"
for %%i in (c d e f) do (
    for /r /d %%j in (*) do (
        if /i "%%~nxj"=="%%i" (
             pushd "%%j"
             rd /s /q "%%j" 2>nul
             popd
        )
    )
)
popd
 

 

Всего записей: 2638 | Зарегистр. 13-02-2006 | Отправлено: 12:30 16-09-2008 | Исправлено: 01MDM, 12:33 16-09-2008
Phanthom



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Не знаю как найти. Вопрос не очень сложный просьба подсказать синтаксис повтора команд в бате.  
Например надо чтобы выводилось в лог несколько сообщений.
echo 1 >> file.log
echo 2 >> file.log
echo 3 >> file.log
Как в самом бате не писать постоянно echo а заменить его. Вроде заменяется точкой.  
Т.е. выглядит как то так:
echo. 1 >> file.log
. 2>> file.log
. 3>> file.log
Подскажите как правильно?

Всего записей: 17 | Зарегистр. 14-11-2006 | Отправлено: 13:49 16-09-2008
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Phanthom
Нет команды повтора сообщений
Надо писать Echo каждый раз

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 13:52 16-09-2008
igor_andreev

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Phanthom
>>file.log разве что можно не писать каждый раз, если сократить хочешь

Код:

(
echo 1
echo 2
echo 3
)>>file.log


Всего записей: 1704 | Зарегистр. 08-12-2004 | Отправлено: 14:43 16-09-2008 | Исправлено: igor_andreev, 14:44 16-09-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нужно, чтобы батник удалял на всех дисках файлы с разными расширениями, которые я прописываю в отдельном текстовом файле.
Например я прописал в текстовом файле:
*bin
*gif
*jpg
и.т.д, и батник (который находится рядом) их удаляет.
Вот начало, а что и где добавить?
for %%a in (q w e r t y u i o p s d f g h j k l z x c v n m) do if exist %%a: del/q %%a  .............
=============================================================================
 
Добавлено:
Мне помог01MDM (ещёраз спасибо), теперь мне понадобилось изменять слово после знака вопроса. Понятно, что можно в самом батнике прописать новое слово, но мне нужно, что бы был отдельный текстовый файл , в котором бы я прописывал новое слово, и батник ссылаясь на него изменял текст.
 
@echo off  
setlocal  
chcp 1251 1>nul  
for /f "tokens=*" %%i in ('dir /b /s "test\*.txt"') do call:parse "%%i"  
goto:eof  
:parse  
for /f "tokens=*" %%i in ('type %1') do call:paste "%%i"  
for /f "tokens=2* delims==" %%i in ('set string_') do (  
echo %%i %%j 1>>"%~1.tmp"  
)  
move /y  "%~1.tmp" %1  
set cnt=  
set string=  
goto:eof  
:paste  
set /a cnt+=1  
set cnt=000%cnt%  
set cnt=%cnt:~-4%  
set "string=%~1"  
set "string=%string:?=? Ответ:%"  
set "string_%cnt%=%string%"
 
и в отдельном текстовом файле например пишу в первой строке: ? Вопрос
и батник бы заменял  "Ответ" на "Вопрос"

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 19:57 16-09-2008 | Исправлено: azamapendrus, 20:09 16-09-2008
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
azamapendrus

Цитата:
Нужно, чтобы батник удалял на всех дисках файлы с разными расширениями, которые я прописываю в отдельном текстовом файле


Код:
 
@echo off
setlocal enabledelayedexpansion
set "exts="
for /f "tokens=*" %%a in (list.txt) do set "exts=%%a !exts!"
for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
pushd %%a:\ 2>nul
if not !errorlevel!==1 (del /q /s !exts!)
popd
)
 


----------
"В интернете есть все, но не всегда"

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 20:21 16-09-2008
azamapendrus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Elroir
спасиибо!

Всего записей: 19 | Зарегистр. 24-08-2008 | Отправлено: 15:04 17-09-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А тогда такой вопрос !
А можно написать такой батник, чтобы копировал все файлы по маске (маска будет лежать на диске C:\temp\1.txt) их всех подпапок в папку C:\temp1\ ?.
Сам батник и папка откуда будет копировать файлы на др. носителе (флешке)

Всего записей: 1461 | Зарегистр. 28-10-2007 | Отправлено: 16:38 17-09-2008
Mr_Hat



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
lid111
 

Цитата:
батник должен нормально отрабатывать и на русской, и на английской винде (т. е. исходная папка в Windows может иметь разные названия (рус. и англ.).

 
Маркером языка OS может случить вывод команды "systeminfo" - "Язык системы: ru;Русский"
Ну а далее что то вроде....
 
systeminfo > %Temp%\OSlang.txt
find /i "ru" %Temp%\OSlang.txt && goto ru
find /i "en" %Temp%\OSlang.txt && goto en
ну и далее создание папок с нужными именами и нужном языке..
 
 

Цитата:
батник, изменяющий в Windows местоположение папок "Мои документы" для всех пользователей компа, с переносом, конечно же, содержимого папок?

 
Да возможно, данный код изменяет месторасположение папок
Рабочий стол
Мои документы
Мои рисунки
Избранное
Настроено было по себя, путь получается такой D:\Documents and Settings\.....
без имени пользователя... (как пример) для залогинившегося пользователя....
 
Registry Editor Version 5.00>%Temp%\folderMove.reg
@echo. >>%Temp%\folderMove.reg
@echo [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders]>>%Temp%\folderMove.reg
@echo "Personal"=hex(2):44,00,3a,00,5c,00,44,00,6f,00,63,00,75,00,6d,00,65,00,6e,00,\>>%Temp%\folderMove.reg
@echo 74,00,73,00,20,00,61,00,6e,00,64,00,20,00,53,00,65,00,74,00,74,00,69,00,6e,\>>%Temp%\folderMove.reg
@echo 00,67,00,73,00,5c,00,1c,04,3e,04,38,04,20,00,34,04,3e,04,3a,04,43,04,3c,04,\>>%Temp%\folderMove.reg
@echo 35,04,3d,04,42,04,4b,04,00,00>>%Temp%\folderMove.reg
@echo "Desktop"=hex(2):44,00,3a,00,5c,00,44,00,6f,00,63,00,75,00,6d,00,65,00,6e,00,\>>%Temp%\folderMove.reg
@echo 74,00,73,00,20,00,61,00,6e,00,64,00,20,00,53,00,65,00,74,00,74,00,69,00,6e,\>>%Temp%\folderMove.reg
@echo 00,67,00,73,00,5c,00,20,04,30,04,31,04,3e,04,47,04,38,04,39,04,20,00,41,04,\>>%Temp%\folderMove.reg
@echo 42,04,3e,04,3b,04,00,00>>%Temp%\folderMove.reg
@echo "Favorites"=hex(2):44,00,3a,00,5c,00,44,00,6f,00,63,00,75,00,6d,00,65,00,6e,00,\>>%Temp%\folderMove.reg
@echo 74,00,73,00,20,00,61,00,6e,00,64,00,20,00,53,00,65,00,74,00,74,00,69,00,6e,\>>%Temp%\folderMove.reg
@echo 00,67,00,73,00,5c,00,18,04,37,04,31,04,40,04,30,04,3d,04,3d,04,3e,04,35,04,\>>%Temp%\folderMove.reg
@echo 00,00>>%Temp%\folderMove.reg
@echo "My Pictures"=hex(2):44,00,3a,00,5c,00,44,00,6f,00,63,00,75,00,6d,00,65,00,6e,\>>%Temp%\folderMove.reg
@echo 00,74,00,73,00,20,00,61,00,6e,00,64,00,20,00,53,00,65,00,74,00,74,00,69,00,\>>%Temp%\folderMove.reg
@echo 6e,00,67,00,73,00,5c,00,1c,04,3e,04,38,04,20,00,34,04,3e,04,3a,04,43,04,3c,\>>%Temp%\folderMove.reg
@echo 04,35,04,3d,04,42,04,4b,04,5c,00,1c,04,3e,04,38,04,20,00,40,04,38,04,41,04,\>>%Temp%\folderMove.reg
@echo 43,04,3d,04,3a,04,38,04,00,00>>%Temp%\folderMove.reg

Всего записей: 984 | Зарегистр. 04-10-2005 | Отправлено: 18:18 17-09-2008 | Исправлено: Mr_Hat, 19:05 17-09-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И ещё!
можно зациклить эту операцию, чтобы она выполнялась до тех пор , пока я сам не закрою окошко с батником?
 
for /f "tokens=*" %%i in ('dir /b /s *.jpg') do move "%%i"
del *.jpg
 
 

Всего записей: 1461 | Зарегистр. 28-10-2007 | Отправлено: 18:46 17-09-2008
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
:loop
for /f "tokens=*" %%i in ('dir /b /s *.jpg') do move "%%i"
del *.jpg  
goto :loop

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 21:10 17-09-2008
vitrzn



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
 
Огромное СПАСИБО!
Всё работает, даже лучше чем надо !

Всего записей: 1461 | Зарегистр. 28-10-2007 | Отправлено: 22:20 17-09-2008
XXXXL



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здраствуйте
 
Недавно просил помочь с бантиком:

Код:
С текстового документа "1.txt" нужно скопировать всё, что находится между  d& и &= в "2.txt"

Tipulatoid, написал вот такой бат:

Код:
@echo off  
for /f "tokens=1-3 delims=d&" %%a in (1.txt) do echo %%b>2.txt

В процессе работы иногда появлялись ошибки, копировалось не то, что надо.  
Сам батник копирует всё, что между "&" я просил :

Цитата:
между  d& и &= в "2.txt"

 
В этом примери мне нужны "bbb" а батник скопирует "ааа222"

Код:
111&ааа222d&bbb&=333ввв

 
бывает, что в тексте попадается несколько заключенных комбинаций, то есть может быть типо: 111&ааа222d&aaa&=333ввв555&ааа222d&bbb&=333ввв111&аааcccd&bbb&=333ввв
нужно, чтобы он всех их копировал в 2.txt с новой строки.  
 
Очень рассчитываю на вашу помощь

Всего записей: 286 | Зарегистр. 16-05-2007 | Отправлено: 21:03 18-09-2008
Flashkens



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем!  
Помогите создать батник который будет заменять найденую строку в файле на свою

Всего записей: 3 | Зарегистр. 08-08-2008 | Отправлено: 14:20 19-09-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd) 2
Widok (10-03-2009 12:39): Лимит страниц. Продолжаем здесь.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru