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

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

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

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 109 110 111 112 113 114 115 116 117 118

   

KLASS



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

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

Всего записей: 9734 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
Maza Faka



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

Код:
 
@echo off
setlocal enabledelayedexpansion
 
for /f "tokens=*" %%a in ('dir /b /s /a:d  d:\folder1\folder2') do (
pushd %%a
call :curDir "!CD!"
popd
copy file.txt !name!.txt)
goto :eof
 
:curDir
set name=%~nx1
echo %name%
 

Батник запускаешь из папки d:\folder1\folder3\
 
Добавлено:
Igor99999
Что бы не парится с вычислением даты, скачай утилиту forfiles.exe и помести её в папку WINDOWS...затем используй такой код:

Код:
 
@echo off
forfiles -pD:\temp -m*.txt -d-15 -c"CMD /C del @FILE"
 

батник удаляет все текстовые файлы созданные 15 и более дней назад в папке "D:\temp", укажешь нужный тебе путь и расширение файлов

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 17:29 30-05-2007 | Исправлено: Maza Faka, 18:38 30-05-2007
Igor99999

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza Faka
 
@echo off
forfiles -pD:\2 -s -m*.* -d-15 -c"CMD /C del @FILE"
 
Добавил еще ключ –s для поиска в подкаталогах.
А как сделать, чтобы удалялись еще и все пустые каталоги и подкаталоги?
 
 

Всего записей: 41 | Зарегистр. 22-09-2004 | Отправлено: 20:18 30-05-2007
Maza Faka



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

Цитата:
А как сделать, чтобы удалялись еще и все пустые каталоги и подкаталоги?


Код:
 
@echo off
for /r c:\folder %%a in (.) do rd /q "%%a" 2>nul
 

Путь заменишь на нужный тебе.

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 08:19 31-05-2007
Robby

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется папка с множеством различных файлов. Как реализовать следующее?
1. Создать папку с таким же именем, как имя файла без расширения;
2. Переместить файл в папку, соответсвующую имени файла. Если это архив, то распаковать архив в соответсвующую имени папку.
3. Файлы с одинаковыми именами, но разными расширениями должны попадать в одну папку, соответсвующую имени файла. Имена файлов с расширениями могут быть формата name.exe и name.xxx.exe и т.д. Нужно, чтоб именем считалась та часть, которая идет до первой точки.

Всего записей: 857 | Зарегистр. 28-09-2003 | Отправлено: 10:04 31-05-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Robby
В данном коде используется каталог "d:\temp", заменишь его на нужный тебе, тип архивных файлов- "RAR", если у тебя другой тип, заменишь имя утилиты и команды для распаковки на нужные тебе:

Код:
 
@echo off
pushd d:\temp
for %%a in (*.*) do (
for /f "delims=." %%b in ("%%~na") do (
md "%%b" 2>nul
if /i not "%%~xa"==".rar" (move "%%a" "%%b") else (rar e "%%a" "%%b">nul 2>&1 & del /q "%%a")
))
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 10:44 31-05-2007 | Исправлено: Maza Faka, 10:53 31-05-2007
Robby

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Maza Faka
Спасибо! Работает.

Всего записей: 857 | Зарегистр. 28-09-2003 | Отправлено: 11:23 31-05-2007
Igor99999

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

Код:
 
@echo off
forfiles -p"D:\Home folders" -s -m*.* -d-15 -c"CMD /C del @FILE"
for /r "D:\Home folders" %%a in (.) do rd /q "%%a" 2>nul  
 

 
В XP все прекрасно работает, но вот в Win2003 server выдает диалог, в котором надо нажать Y.  
 
1. Как без диалога?
2. В Win2003 server есть своя утилита forfiles, с ней этот код не работает. Пришлось родную заархивировать.

Всего записей: 41 | Зарегистр. 22-09-2004 | Отправлено: 11:43 31-05-2007
Maza Faka



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

Цитата:
в Win2003 server выдает диалог, в котором надо нажать Y

Попробуй так:

Код:
 
for /r "D:\Home folders" %%a in (.) do echo Y | rd /q "%%a" 2>nul
 

 

Цитата:
 В Win2003 server есть своя утилита forfiles, с ней этот код не работает

Перед ключами ставь "/" вместо "-" и разделяй ключи и параметры пробелом, вот так:

Код:
 
forfiles /P "D:\Home folders" /S /M *.* /D -15 /C "CMD /C del @FILE"
 


Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 11:59 31-05-2007 | Исправлено: Maza Faka, 12:09 31-05-2007
Igor99999

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

Код:
 
@echo off
forfiles /P "D:\Home folders" /S /M *.* /D -15 /C "CMD /C del @FILE"
for /r "D:\Home folders" %%a in (.) do rd /q "%%a" 2>nul  
 

 
Только почему-то не удаляет пустые папки младше 2 недель!
Разве этот код не для всех пустых папок?

Код:
 for /r "D:\Home folders" %%a in (.) do rd /q "%%a" 2>nul  


Всего записей: 41 | Зарегистр. 22-09-2004 | Отправлено: 12:27 31-05-2007
Maza Faka



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

Цитата:
Только почему-то не удаляет пустые папки младше 2 недель!  
Разве этот код не для всех пустых папок?

Ты же не сказал, что каталоги тоже надо по дате

Код:
 
@echo off
forfiles /p C:\Temp /s /d -15 /c "cmd /c rd /q @FILE">nul 2>&1
 


Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 14:51 31-05-2007 | Исправлено: Maza Faka, 14:52 31-05-2007
FAPSUK



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, помогите пожалуйста!
 
Есть текстовыйфайл вида :
 
──────────────────────────────────────────────────────────────────────────  
Район: чччччччччччччччччччччччччччччччччччччччччччччччччччччччч
 
01.01.2007 чччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
 
──────────────────────────────────────────────────────────────────────────  
Район: чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
 
01.01.2007 ччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
 
──────────────────────────────────────────────────────────────────────────  
 
Необходимо раздербанить его на части с именами даты из текста (01.01.2007_XXXXX)
Это как-то реализуемо? Помогите, пожалуйста!
 
 
Добавлено:
Извините, ────── это знаки ----------- так отобразились

Всего записей: 18 | Зарегистр. 02-03-2006 | Отправлено: 23:30 01-06-2007
MageSlayerDen

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FAPSUK
 
В принципе на awk можно состряпать такой скрипт. См. gawk + документацию по нему

Всего записей: 72 | Зарегистр. 26-05-2005 | Отправлено: 14:34 04-06-2007
volodyalipkin



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FAPSUK
Покажите, что в точности надо. На что можно ориентироваться. Скажем после -------- всегда пустая строка, сирока с "район", пустая строка, строка с датой. Кто такие XXXX в 01.01.2007_XXXXX

Всего записей: 768 | Зарегистр. 12-10-2002 | Отправлено: 07:09 05-06-2007
dardreams



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Возможно ли запускать процесс cmd в скрытом режиме . VBS и WINAPI не предлогать.
Например:
Если в окошке выполнить(RUN) написать так:
1)cmd /c msg * %time%
 - после этого сначала появится черное окошко потом исчезнет и выдаст ответ .
2)cmd /c notepad  
 - снова появится черное окно но уже не исчезнет пока не закрыть блокнот.
Вопрос: Можно ли убрать это надоедливое окошко ?
--------------------------------------------------------
Юзал cmdow окошко появляется точно так же.

Всего записей: 99 | Зарегистр. 29-05-2007 | Отправлено: 09:24 05-06-2007 | Исправлено: dardreams, 09:28 05-06-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dardreams
Утилита hstart - http://www.ntwind.com/software/utilities/hstart.html

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 10:56 05-06-2007
dardreams



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Elroir
Спасибо огромное это то что я так давно искал !!!

Всего записей: 99 | Зарегистр. 29-05-2007 | Отправлено: 08:24 06-06-2007
zayakin

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
маюсь над проблемой. надо из файла убрать все дубликаты строк и сформировать новый из уникальных строк этого файла для дальнейшей работы.
findstr, find приспособить не получается. задумка такая: for читает исходный файл А, каждую строку дает для анализа во временном файле Б. если в Б нет такой строки - добавляет ее туда. что-то такое клепается  
@echo.>11
FOR /F "eol=  skip=2 tokens=1* " %%i in (%1) do FINDSTR /V "%%i %%j" 11 >>11
а не получается.
помогите, люди добрые!
 
Добавлено:
FOR /F "eol=  skip=2 tokens=1,9,10,15 delims=," %%i in (%1) do (
if NOT "%%i %%l %%k %%j"=="%current%" echo %current%
echo %%i %%l %%k %%j
set "current=%%i %%l %%k %%j"
echo %current%
pause)
 
почему-то переменной %current% не присваевается новое значение

Всего записей: 8 | Зарегистр. 06-06-2007 | Отправлено: 16:34 06-06-2007
DJ makrus

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
 В течении всего дня использовал метод научного тыка по справке, но так и не смог написать батник который бы открывал текстовый файл на другом компе в локалке, т.е. что бы я его запустил, а пользователь на другом компе увидел.
Есть решение?
PS уже смотреть на notepad не могу    
 
Добавлено:
KapralBel
да точно, пробегался я в хелпе по этой команде, но понял что это в первую очередь планировщик, а то что планировать можно на другой машине - не подумал , спасибо. Но вариант Elroir'а мне кажется попроще будет, тем более что PSTools у меня имеется. Спасибо за помощь.  

Всего записей: 529 | Зарегистр. 25-03-2004 | Отправлено: 17:35 06-06-2007 | Исправлено: DJ makrus, 16:13 07-06-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DJ makrus
AT /?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:49 06-06-2007
Elroir



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DJ makrus
Можно еще воспользоваться сторонней утилитой PsExec - http://www.microsoft.com/technet/sysinternals/ProcessesAndThreads/PsExec.mspx
 
Добавлено:
zayakin

Цитата:
почему-то переменной %current% не присваевается новое значение

Присваивается, просто ты его не видишь.
В начало батника добавь строчку "setlocal enabledelayedexpansion" и везде замени %current% на !current!
 
Добавлено:
zayakin

Цитата:
надо из файла убрать все дубликаты строк и сформировать новый из уникальных строк этого файла для дальнейшей работы


Код:
 
sort file.txt | uniq -u>new.txt
 

Утилита uniq входит в состав пакета UnxUtils - http://unxutils.sourceforge.net/

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

Всего записей: 2631 | Зарегистр. 05-02-2003 | Отправлено: 19:22 06-06-2007 | Исправлено: Elroir, 19:28 06-06-2007
   

Страницы: 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 109 110 111 112 113 114 115 116 117 118

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


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru