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

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

Автор: Robby
Дата сообщения: 31.05.2007 09:04
Имеется папка с множеством различных файлов. Как реализовать следующее?
1. Создать папку с таким же именем, как имя файла без расширения;
2. Переместить файл в папку, соответсвующую имени файла. Если это архив, то распаковать архив в соответсвующую имени папку.
3. Файлы с одинаковыми именами, но разными расширениями должны попадать в одну папку, соответсвующую имени файла. Имена файлов с расширениями могут быть формата name.exe и name.xxx.exe и т.д. Нужно, чтоб именем считалась та часть, которая идет до первой точки.
Автор: Maza Faka
Дата сообщения: 31.05.2007 09:44
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")
))
Автор: Robby
Дата сообщения: 31.05.2007 10:23
Maza Faka
Спасибо! Работает.
Автор: Igor99999
Дата сообщения: 31.05.2007 10:43
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
Автор: Maza Faka
Дата сообщения: 31.05.2007 10:59
Igor99999

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

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

Код:
for /r "D:\Home folders" %%a in (.) do echo Y | rd /q "%%a" 2>nul
Автор: Igor99999
Дата сообщения: 31.05.2007 11:27
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
Автор: Maza Faka
Дата сообщения: 31.05.2007 13:51
Igor99999

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

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

Код:
@echo off
forfiles /p C:\Temp /s /d -15 /c "cmd /c rd /q @FILE">nul 2>&1
Автор: FAPSUK
Дата сообщения: 01.06.2007 22:30
Друзья, помогите пожалуйста!

Есть текстовыйфайл вида :

──────────────────────────────────────────────────────────────────────────
Район: чччччччччччччччччччччччччччччччччччччччччччччччччччччччч

01.01.2007 чччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч

──────────────────────────────────────────────────────────────────────────
Район: чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч

01.01.2007 ччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч
чччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччччч

──────────────────────────────────────────────────────────────────────────

Необходимо раздербанить его на части с именами даты из текста (01.01.2007_XXXXX)
Это как-то реализуемо? Помогите, пожалуйста!


Добавлено:
Извините, ────── это знаки ----------- так отобразились
Автор: MageSlayerDen
Дата сообщения: 04.06.2007 13:34
FAPSUK

В принципе на awk можно состряпать такой скрипт. См. gawk + документацию по нему
Автор: volodyalipkin
Дата сообщения: 05.06.2007 06:09
FAPSUK
Покажите, что в точности надо. На что можно ориентироваться. Скажем после -------- всегда пустая строка, сирока с "район", пустая строка, строка с датой. Кто такие XXXX в 01.01.2007_XXXXX
Автор: dardreams
Дата сообщения: 05.06.2007 08:24
Возможно ли запускать процесс cmd в скрытом режиме . VBS и WINAPI не предлогать.
Например:
Если в окошке выполнить(RUN) написать так:
1)cmd /c msg * %time%
- после этого сначала появится черное окошко потом исчезнет и выдаст ответ .
2)cmd /c notepad
- снова появится черное окно но уже не исчезнет пока не закрыть блокнот.
Вопрос: Можно ли убрать это надоедливое окошко ?
--------------------------------------------------------
Юзал cmdow окошко появляется точно так же.
Автор: Elroir
Дата сообщения: 05.06.2007 09:56
dardreams
Утилита hstart - http://www.ntwind.com/software/utilities/hstart.html
Автор: dardreams
Дата сообщения: 06.06.2007 07:24
Elroir
Спасибо огромное это то что я так давно искал !!!
Автор: zayakin
Дата сообщения: 06.06.2007 15:34
маюсь над проблемой. надо из файла убрать все дубликаты строк и сформировать новый из уникальных строк этого файла для дальнейшей работы.
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% не присваевается новое значение
Автор: DJ makrus
Дата сообщения: 06.06.2007 16:35
В течении всего дня использовал метод научного тыка по справке, но так и не смог написать батник который бы открывал текстовый файл на другом компе в локалке, т.е. что бы я его запустил, а пользователь на другом компе увидел.
Есть решение?
PS уже смотреть на notepad не могу

Добавлено:
KapralBel
да точно, пробегался я в хелпе по этой команде, но понял что это в первую очередь планировщик, а то что планировать можно на другой машине - не подумал , спасибо. Но вариант Elroir'а мне кажется попроще будет, тем более что PSTools у меня имеется. Спасибо за помощь.
Автор: KapralBel
Дата сообщения: 06.06.2007 16:49
DJ makrus
AT /?
Автор: Elroir
Дата сообщения: 06.06.2007 18:22
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
Автор: Garrett
Дата сообщения: 06.06.2007 20:47
zayakin
Elroir
Там есть свой "юниксовый" sort
Я переименовал его как usort.
Запуск:
usort -u input > output
Автор: zayakin
Дата сообщения: 07.06.2007 06:34
Elroir, спасибо!
set "current=1"
FOR /F "eol=R skip=2 tokens=1,9,10,15 delims=," %%i in (%1) do (
if NOT "%%i %%l %%k %%j"=="!current!" echo !current!
set "current=%%i %%l %%k %%j"
)
работает!

в данном случае, sort file.txt | uniq -u>new.txt не работает, так как строки бывают как дублированные, так и не дублированные.

Добавлено:
Garrett, отлично. решает проблему. как сделать вывод не в файл, а параметром для программы? и вывод идет построчно или всем файлом
usort -u %1 > echo создает файл echo
Автор: Garrett
Дата сообщения: 07.06.2007 07:10
zayakin
Не знаю, мне часто по работе надо просто сортировать разные файлы.
Автор: Maza Faka
Дата сообщения: 07.06.2007 07:40
zayakin

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

Если строки не слишком длинные, то можно так:

Код:
@echo off
echo off>new.txt
for /f "delims=" %%a in (old.txt) do (
findstr /i /x /c:"%%a" new.txt || echo %%a>> new.txt)
Автор: Gast777
Дата сообщения: 07.06.2007 10:22
Ребята помогите, нужен батник который запускалбы ХХХ.exe и через минуту отключал.
Зарание спасибо
Автор: vshersh
Дата сообщения: 07.06.2007 10:27
Gast777
Может так:

Код:
@echo off
start ХХХ.exe
ping -n 60 localhost > nul
taskkill /IM ХХХ.exe
Автор: Gast777
Дата сообщения: 07.06.2007 10:35
vshersh
так папробывал,нечего не вышло.
@echo off
start C:\ProgramFiles\ххх.exe
ping -n 60 localhost > nul
taskkill /IM C:\ProgramFiles\ххх.exe
Автор: vshersh
Дата сообщения: 07.06.2007 10:41
Gast777

Код:
@echo off
start C:\ProgramFiles\ххх.exe
ping -n 60 localhost > nul
taskkill /IM ххх.exe
Автор: Gast777
Дата сообщения: 07.06.2007 10:50
vshersh
Спасибо, всё работает на ура

Добавлено:
vshersh
А можноли, чтобы этотже батник после закрытия XXX.exe запускал через 10 секунд YYY.exe и также закравал.
Автор: vshersh
Дата сообщения: 07.06.2007 11:15
Gast777
шутишь?

Код: @echo off
start C:\ProgramFiles\ххх.exe
ping -n 60 localhost > nul
taskkill /IM ххх.exe
ping -n 10 localhost > nul
start yyy.exe
ping -n 60 localhost > nul
taskkill /IM yyy.exe
Автор: Gast777
Дата сообщения: 07.06.2007 11:31
vshersh

Цитата:
шутишь?

Нет, не шучу!!!
Всё работает, запускает XXX,закрывайт, запускает YYY, закрывает, только вот паузу не выдерживает бастро закрывае на задачи 60 10 60 даже не смотрит

Автор: vshersh
Дата сообщения: 07.06.2007 11:37
Gast777
Попробуй увеличить задержку... Поэкспериментируй с другим приложением - например с блокнотом (notepad.exe) - возможно дело в чем-то другом
Автор: Gast777
Дата сообщения: 07.06.2007 11:40
Вот так всё пашит.
@echo off
start C:\ProgramFiles\XXX.exe
C:\Resource\sleep.exe 60 > nul
taskkill /IM XXX.exe
C:\Resource\USD\XXX\sleep.exe 10 > nul
start C:\ProgramFiles\YYY.exe
C:\Resource\sleep.exe 60 > nul
taskkill /IM YYY.exe

vshersh Спасибо!!!!!

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879

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


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