Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 7

Автор: BVV63
Дата сообщения: 08.10.2009 05:13
Greay

Цитата:
echo Y|del

А это зачем? У команды же есть ключ /Q.

Цитата:
Как написать что бы удаляла на всём компе/на определённом разделе?

А простая конструкция
DEL /Q /S <Раздел:>\*.bak
(и так по-очереди для всех разделов) Вас из-за чего-то не устраивает?
Автор: 01MDM
Дата сообщения: 08.10.2009 08:34
amnon10

Код:
@echo off
setlocal

for /f "tokens=*" %%i in ('dir /b /a') do call:1 "%%i" "%%~ti"
goto:eof

:1
2>nul pushd %1 && (popd & set "search=\.\.") || (set "search=[0-9]:[0-9]")

for /f "tokens=1,2" %%i in ('dir /a /t:c %1 ^| findstr "%search%"') do (
    echo %1
echo creation: %%i %%j
    echo modification: %~2
    echo.
)
Автор: mrCrowley
Дата сообщения: 08.10.2009 09:44
Подскажите, как через батник переименовать файл, прицепив к названию дату и время создания (модификации)?
test.txt > test_011208_12_37.txt
Спасибо
Автор: oshizelly
Дата сообщения: 08.10.2009 11:12
Подскажите, пожалуйста, можно ли написать Bat-файл под Windows XP для смены из командной стргоки текущего разрешения экрана на заданное?
Спасибо!
Автор: 01MDM
Дата сообщения: 08.10.2009 11:42
oshizelly
Утилита NirCmd умеет это делать.

Код:
nircmdc setdisplay
Автор: Greay
Дата сообщения: 08.10.2009 13:00

Цитата:
@echo off
echo Y|del *.bak

удаляет все файлы *.bak из своей директории.
Как написать что бы удаляла на всём компе/на определённом разделе?
Спасибо.



Цитата:
А простая конструкция
DEL /Q /S <Раздел:>\*.bak
(и так по-очереди для всех разделов) Вас из-за чего-то не устраивает?


Спасибо. Подходит.

А как реализовать что бы файлы не удалялись а переименовывались в другое расширение. Например *.docx, *.doc в *.bak
Спасибо.
Автор: wolf0425
Дата сообщения: 08.10.2009 13:43
mrCrowley

Цитата:
Подскажите, как через батник переименовать файл, прицепив к названию дату и время создания (модификации)?
test.txt > test_011208_12_37.txt

рекомендую все-же формат test_20081201_12_37.txt - чтоб сортировка по времени и по имени совпадала. Не понравится - сам переставишь/урежешь.

Код: call :_ren test.txt
goto :eof

:_ren
set "_time=%~t1"
ren "%~1" "%~n1_%_time:~6,4%%_time:~3,2%%_time:~0,2%_%_time:~11,2%_%_time:~14,2%%~x1"
goto :eof
Автор: oshizelly
Дата сообщения: 08.10.2009 14:16
01MDM
Цитата:
Утилита NirCmd умеет это делать.

Точно, самое оно! Сделал себе пару ярлыков на дестоп, получилось довольно удобно. Кстати, очень могучая утилита, она многое другое тоже умеет. Всем рекомендую. Спасибо!

Автор: mrCrowley
Дата сообщения: 08.10.2009 15:26
2 wolf0425
Супер! Спасибо. А вот если с несколькими файлами такое проделать одновременно?..

test01.txt > test_20081201_12_37.txt
test02.txt > ?
test03.txt > ?
test04.txt > ?
...........

при этом чтобы названия не конфликтовали.. или посекундно учитывается
Автор: Greay
Дата сообщения: 08.10.2009 16:00
Жду... (мне срочно)
Автор: wolf0425
Дата сообщения: 08.10.2009 17:32
mrCrowley
Цитата:
или посекундно учитывается
посекундно - плохой вариант, если минуты совпали -то и секунды совпасть могут. делаем сразу счетчик.
Код: @echo off
set "_name=test"
for /f "delims=" %%a in ('dir /b /a-d "%_name%*.txt"') do call :_ren "%%a"
goto :eof

:_ren
set "_time=%~t1"
set "_new=%_name%_%_time:~6,4%%_time:~3,2%%_time:~0,2%_%_time:~11,2%_%_time:~14,2%"
ren "%~1" "%_new%%~x1" 2>nul && goto :eof
set counter=1
:_search
set /a counter += 1
if exist "%_new%_(%counter%)%~x1" goto :_search
ren "%~1" "%_new%_(%counter%)%~x1"
goto :eof
Автор: toshanNEW
Дата сообщения: 08.10.2009 23:22
не сочтите за труд - помогите, пожалуйста:

нужно после подключения по впн прописать маршрут. так как после подключения впн имеет каждый раз разный идентификатор интерфейса, надо сначала скопировать его, например, из результата выполнения комманды route print, а затем в ставить в следующую комманду.

т.е. сейчас запускаю

Код: route print

Interface List
0x1 ........................... MS TCP Loopback interface
0x2 ...00 11 11 34 56 01 ...... VIA Rhine III Compatible Fast Ethernet Adapter - Packet Scheduler Miniport

0x20004 ...00 53 45 00 00 00 ...... WAN (PPP/SLIP) Interface
Автор: PLAYYOB
Дата сообщения: 09.10.2009 02:20
Нужно автоматизировать вот такой процесс:

D:\folder_X\folder_Y - copy
D:\folder_Z\folder_Y - paste (с заменой всех файлов)
D:\folder_V\ xyz.exe - run

Т.е. Нужно скопировать папку из одной директории в другую с заменой всех файлов и после этого запустить exe файл.

Как этого сделать?
Ничего подобного ранее не делал, поэтому если не затруднит подробно описать процесс.

Спасибо.
Автор: BVV63
Дата сообщения: 09.10.2009 05:20
Greay

Цитата:
А как реализовать что бы файлы не удалялись а переименовывались в другое расширение. Например *.docx, *.doc в *.bak

REN <Раздел:>\<Путь>\*.docx *.bak
REN <Раздел:>\<Путь>\*.doc *.bak

Добавлено:
PLAYYOB
Так не сойдёт?

COPY /Y D:\folder_X\folder_Y\*.* D:\folder_Z\folder_Y\*.*
D:\folder_V\xyz.exe
Автор: Rush
Дата сообщения: 09.10.2009 06:03
PLAYYOB
Из комстроки:

Код: cmd /c xcopy "D:\folder_X\folder_Y" "D:\folder_Z\folder_Y" /i/e/c/q/k/h/y & start "" "D:\folder_V\ xyz.exe"
Автор: PLAYYOB
Дата сообщения: 09.10.2009 11:01
BVV63

Цитата:
Так не сойдёт?

Я понятия не имею

Rush
Выглядит отлично.

Все сделал. Единственное перед xyz.exe не нужно пробела. Работает отлично. Большое спасибо.
Автор: Rush
Дата сообщения: 09.10.2009 11:36
PLAYYOB

Цитата:
Единственное перед xyz.exe не нужно пробела

Как у тебя было написано, так и скопировал.
Автор: wolf0425
Дата сообщения: 09.10.2009 12:26
toshanNEW
чего-то типа такого сгодится?

Код: for /f "tokens=1,*" %%a in (' route print ^| find /i "WAN (PPP/SLIP) Interface" ') do route add 192.168.90.0 mask 255.255.255.0 172.17.241.1 if %%a
Автор: bredonosec
Дата сообщения: 09.10.2009 15:15
задача тривиальна - сбросить всем по списку файлик произвольный.
Батник, создающий список компов в группе, есть, список тож есть, так что, решение нарисовано такое:

echo

set DomainUserUPN=user
set DomainUserPassword=password
for /f "tokens=*" %%i in (SK-AD.txt) do (
IF NOT EXIST "%ALLUSERSPROFILE%\Desktop\TechPagalba.url" %SystemRoot%\System32\XCOPY.EXE "\\server\TechPagalba.url" "%ALLUSERSPROFILE%\Desktop\TechPagalba.url"
) goto return
:return

собсно, вопрос - как именно указывать расположение у меня, и как именно -что надо кидать на комп, в данный момент обозначенный как "i" ?
Автор: ponand
Дата сообщения: 09.10.2009 16:43
Подскажите почему не получается загрузить в переменную значение из файла с помощью такой строки
set s=<1.txt
Автор: wolf0425
Дата сообщения: 09.10.2009 16:59
bredonosec у тебя там зря %ALLUSERSPROFILE% фигурирует - это папка на локальном диске компа, на котором батник запущен.
Ну и у for.. do () - все %переменные% в скобках заменяются на значения один раз - когда cmd доходит строки с for.
Если у тебя на всех компах система однообразно стоит на диске c: - копирование делается в одну строку, запущенную с админскими правами
Код: for /f "tokens=*" %%i in (SK-AD.txt) do ping -n 1 %%i >nul && if exist "\\%%i\C$\Documents and Settings\All Users\nul" if not exist "\\%%i\C$\Documents and Settings\All Users\desktop\techpagalba.url" copy /b "\\server\share\techpagalba.url" "\\%%i\C$\Documents and Settings\All Users\desktop\techpagalba.url"
Автор: NIKZZZZ
Дата сообщения: 09.10.2009 17:26
ponand

Цитата:
set s=<1.txt



Код: Set /p s=<1.txt
Автор: mrCrowley
Дата сообщения: 09.10.2009 19:22
2 wolf0425
Если позволите, еще пару вопросов:

Первый скрипт, при небольших интервалах работы, почему-то не всегда срабатывает.. Создали test.txt - отработал батник - переименовали, еще раз то же самое - нормально, еще раз - тормоза - test.txt так и остается. Бывает на 3-й раз, на 4-й.. С чем это может быть связано?
И как можно в коде скрипта (для обоих вариантов) указать рабочий каталог, на тот случай, если батник выполняется не в нем..
Автор: wolf0425
Дата сообщения: 09.10.2009 21:12

Цитата:
как можно в коде скрипта (для обоих вариантов) указать рабочий каталог,
например дописать в начало pushd d:\gdenado


Цитата:
С чем это может быть связано?
если у второго проблема - можно убрать 2>nul и посмотреть какими словами ругается. А у первого и так должно писаться.
Может файл кто-то держит? антивирус проверяет или он индексируется...
Автор: wolf0425
Дата сообщения: 09.10.2009 23:12
чего-то я сегодня туплю.
Как как можно быстро вырезать 3 последних строки (лишние они) у кучки файлов?
Автор: king_stiven
Дата сообщения: 10.10.2009 02:09
wolf0425
sed -n -e :a -e "1,3!{P;N;D;};N;ba" 1.txt > 2.txt
Автор: bredonosec
Дата сообщения: 10.10.2009 14:25
wolf0425
а можно раскомментировать строку? Просто не совсем понимаю смысл некоторых моментов. Зачем пинговать, что за нул мы ищем, из какой шары достается (напр, если со своей машины хочу сбросить, и у меня она не серв домена), что означает знак &&
Про pcexec пока не надо, но на будущее было б полезно знать, как...
Автор: wolf0425
Дата сообщения: 10.10.2009 15:58

Цитата:
Зачем пинговать
пинг занимает секунду, а если комп выключен - обращение в его шару подвешивает батник существенно надольше
Цитата:
что за нул мы ищем,
проверяем что есть каталог C$\Documents and Settings\All Users\ на нужном компе. Нехорошо копировать если такого каталога нет
Цитата:
из какой шары достается
\\server\share\
Цитата:
если со своей машины хочу сбросить, и у меня она не серв домена
в варианте без psexec - можно копировать и с локального диска машины где батник запущен, источник я с твоего примера скопировал - только ты имя шары забыл у сервера указать, я дописал
Цитата:
что означает знак &&
если идущая перед ним команда не выдала ошибку - выполнить ту что после знака. Т.е. если комп пингуется - пробуем проверить наличие каталога и скопировать файл, не пингуется - сразу берем следующий по списку.


Автор: toshanNEW
Дата сообщения: 10.10.2009 17:52
wolf0425

Цитата:
чего-то типа такого сгодится?

Код:
for /f "tokens=1,*" %%a in (' route print ^| find /i "WAN (PPP/SLIP) Interface" ') do route add 192.168.90.0 mask 255.255.255.0 172.17.241.1 if %%a

спасибо. почему-то не с первого раза, но получилось.

теперь ещё попробывал подключать само vpn-соединение из bat-ника, но что-то странное выходит.
если делать так:

Код: rasdial "имя" имя_пользователя пароль
Автор: bredonosec
Дата сообщения: 10.10.2009 18:10

Цитата:
в варианте без psexec - можно копировать и с локального диска машины где батник запущен,

то есть, в моем варианте пойдет что-нить типа

Цитата:
for /f "tokens=*" %%i in (SK-AD.txt) do ping -n 1 %%i >nul && if exist "\\%%i\C$\Documents and Settings\All Users\nul" if not exist "\\%%i\C$\Documents and Settings\All Users\desktop\techpagalba.url" copy /b "C:\Documents and Settings\All Users\desktop\techpagalba.url" "\\%%i\C$\Documents and Settings\All Users\desktop\techpagalba.url"

?
вроде если без переменной локальный путь кинуть, не должно подменить?

Цитата:
если идущая перед ним команда не выдала ошибку - выполнить ту что после знака.

спасибо, в понедельник опробую

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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