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

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

Автор: wolf0425
Дата сообщения: 19.07.2007 12:33
king_stiven ну я ж зачем-то писал про вариант с call - как раз для случаев, когда setlocal enabledelayedexpansion неприемлемы, он вполне решает проблему.


Цитата:
А у gsar только эти три знака являются проблемными

эти два (верхние). кавычки в строке проблемные не у gsar, а по жизни.
если уверен что кавычек " внутри имен не будет - можно не заменять.
для реплейсера, кстати, невредно провериться на ; в именах



Автор: mitrichbel
Дата сообщения: 19.07.2007 13:26
wolf0425
ну в целом представляю, что такое пакетная обработка файлов, да. Про help понял, пошёл.
Автор: Nagual
Дата сообщения: 19.07.2007 17:31
king_stiven
попробуй увеличивать число кавычек на 1, обрамляющие название файла или папки до тех пор, пока не достигнешь желаемого результата

Добавлено:
в одном батнике мне помогло достичь примерно такой цели аж 5 кавычек

Добавлено:
All, такая задача:
есть некая строка из набора 16-ричных символов, напимер
044C0437043E0432043004420435043B
как пребразовать эту строку к виду
$04$4C$04$37$04$3E$04$32$04$30$04$42$04$35$04$3B
зы: хочу передать ее в таком виде для замены в хекс-режиме через sbs2.com
Автор: NIKZZZZ
Дата сообщения: 19.07.2007 18:56
Nagual

Цитата:
есть некая строка из набора 16-ричных символов, напимер
044C0437043E0432043004420435043B
как пребразовать эту строку к виду
$04$4C$04$37$04$3E$04$32$04$30$04$42$04$35$04$3B


Код: echo off
set "string=044C0437043E0432043004420435043B"
set "result="
:_2
if "%string%"=="" goto _1
set result=%result%$%string:~0,2%
set string=%string:~2%
goto _2
:_1
echo %result%
Автор: TCPIP
Дата сообщения: 19.07.2007 19:16
KapralBel

Цитата:
Это том многотомного архива или отделный архив?

Отдельный архив. Многотомные, там где есть расширение part.x[x[x]].rar, распаковываются на ура.
Например: 01_The_Chase.part01.rar; 01_The_Chase.part02.rar;...
Ровно так же отлично распаквываются и отдельные архивы, у которых расширение без номера тома --- .rar.
Например: 01_The_Chase.rar
Проблема начинается, если отдельный rar-архив содержит точку в имени.
Например: 01.The_Chase.rar.
Такие архивы не обрабатываются вообще, ибо бетч обходит их стороной. Понятно, что, замени точку в имени и проблема решена, но, наверняка есть более элегантное решение.
Автор: NIKZZZZ
Дата сообщения: 19.07.2007 19:21
TCPIP

Цитата:
Проблема начинается, если отдельный rar-архив содержит точку в имени.

Используй короткие имена файлов - вместо %i поставь %~si .
Автор: Elroir
Дата сообщения: 19.07.2007 20:00
vmix
Скрипт для ftp.exe, для выкладывания файла rem_fs на ftp - put_file.txt:

Код:
open hostname
username
password
delete rem_fs.txt
put rem_fs.txt
quit
Автор: Nagual
Дата сообщения: 19.07.2007 23:16
NIKZZZZ
спс, работает
Автор: jupiter1976
Дата сообщения: 20.07.2007 08:11
Уважаемые помогите создать батник!

Есть текстовый файл, допустим list.txt, внутри мого чего написано, единственное что нужно сделать - это найти слово item0, заменить на item1, а item1 заменить на item0

Автор: KapralBel
Дата сообщения: 20.07.2007 08:42
jupiter1976

Код:
@Echo Off
gsar -sItem1 -r### -i -o list.txt
gsar -sItem2 -rItem1 -i -o list.txt
gsar -s### -rItem2 -i -o list.txt
Автор: jupiter1976
Дата сообщения: 20.07.2007 09:03
KapralBel
пишет gsar не является внутренней или внешней командой
Автор: KapralBel
Дата сообщения: 20.07.2007 09:10
jupiter1976
А в шапке поискать утилиту?
Автор: jupiter1976
Дата сообщения: 20.07.2007 09:13
KapralBel
спасибо
Автор: slech
Дата сообщения: 20.07.2007 11:01
подскажите пожалуйста как сделать

net use k: \\xx.xx.xx.xx\с$

net use k: /del /Y

т.е. запускаем батник он монтирует диск
второй раз запускаем он отмонтирует аго

итого что бы он делал то что ещё не сдеално - если есть то отмонтирует, если нету то мнотирует.

спасибо.
Автор: KapralBel
Дата сообщения: 20.07.2007 11:16
slech

Код: if exist k:\autoexec.bat (net use K: /del /y) else (net use K: \\x.x.x.x\C$)
Автор: yurkesha
Дата сообщения: 20.07.2007 12:52
Ну наверное сподручней все-таки будет добавить небольшие проверки:
Код: @echo off
SET NET_DISK=K:
SET NET_SHARE=\\x.x.x.x\C$
FOR /f "usebackq tokens=1,2 eol=;" %%a IN (`net use`) DO IF "%%a"=="%NET_DISK%" SET CURRENT_CONNECT=%%b
if "%CURRENT_CONNECT%"=="" ( if exist %NET_DISK% echo Этот диск локальный!&EXIT ELSE net use %NET_DISK% %NET_SHARE%)
if "%CURRENT_CONNECT%"=="%NET_SHARE%" (net use %NET_DISK% /delete) ELSE (net use %NET_DISK% /delete & net use %NET_DISK% %NET_SHARE%)
Автор: JohnRD
Дата сообщения: 20.07.2007 13:34
добрый день подскажите пожалуйста

хочу запустить на машинах из списка команнду
и забыл как это сделать


Код:
for /f "tokens=1" %%a in (list.csv) do set ??=hostname ??
psexec \\%hostname% -u main\inst_sms_agt -p 123456789 -c -d 1.cmd
Автор: KapralBel
Дата сообщения: 20.07.2007 13:53
JohnRD

Код: for /f "tokens=1" %%a in (list.csv) do set psexec \\%%a -u main\inst_sms_agt -p 123456789 -c -d 1.cmd
Автор: JohnRD
Дата сообщения: 20.07.2007 14:43
KapralBel

прикольно я set убрал и пошло
спасибо

вот еще вопрос в в голове крутится

у меня машины VPro есть (управление до загрузки ОС)

есть некие проблемы, пока машины выключены они в днс регистрируются как они запровиженены на сервере AMT например IVANOV-AB это стандарт

грузится WINDOWS они перерегистрируются в ДНС уже так, как вбил инженер техподдержки - например Ivanov-AB

у меня NetworkInspectorFluke утром и вечером регистрирует эти изменения

хочу запустить cmd

только поднять регистр у $COMPUTERNAME$

reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v Hostname /t REG_SZ /d $COMPUTERNAME$ /f

как это можно сделать?

спасибо за Вашу помощь



Добавлено:
KapralBel


Код: for /f "tokens=1" %%a in (list.csv) do (
ping %%a %1 >Nul
if !errorlevel!==0 (
psexec \\%%a -u main\inst_sms_agt -p 123456789 -c -d 1.cmd
Автор: vmix
Дата сообщения: 20.07.2007 15:59
Elroir

Цитата:
Еще уточнение - когда я на локальном компе получаю список файлов, мне надо создать ту же самую структуру на локальном диске или в локальной директории?
Поясню - получили c:\test\dir1\file1, c:\test\dir2\file2. Надо создать файлы на локальном диске C: в этих же директориях или выкинуть букву диска и создать всю структуру в той директории, где я сейчас нахожусь - например d:\dir3. И тогда структура получится d:\dir3\test\dir1\file1, d:\dir3\test\dir2\file2 ?


Именно так, d:\dir3\test\dir1\file1, соответственно d:\dir3 заменять на c: при обратной операции - работе change_fs.cmd

Спасибо, сейчас буду пробовать make_fs.cmd.
Автор: Elroir
Дата сообщения: 20.07.2007 16:41
vmix
Тот вариант, который я выложил, создает файлы не в локальной директории, а на диске.
Позже выложу другой вариант.
Автор: vmix
Дата сообщения: 20.07.2007 20:29
Elroir
Вот такой у меня получился makefs, создающий FS в папке loc

Код:
@echo off
if not exist rem_fs.txt goto error
for /f "tokens=*" %%a in (rem_fs.txt) do (
md \loc\%%~pa>nul 2>nul
)
for /f "tokens=*" %%a in (rem_fs.txt) do (
cd \loc\%%~pa
fsutil file createnew "%%~nxa" 0
)
goto :EOF
:error
echo Error - rem_fs.txt not found

Теперь какбы сделать change_fs ?

Спасибо за помощь
Автор: jupiter1976
Дата сообщения: 20.07.2007 20:50
KapralBel
вот так у меня заработало:


Цитата:

gsar -sitem0 -ritemm1 -i -o list.txt
gsar -sitem1 -ritem0 -i -o list.txt
gsar -sitemm1 -ritem1 -i -o list.txt

Автор: Elroir
Дата сообщения: 20.07.2007 23:57
vmix
change_fs должен заменить все пути из списка сделанного в директории loc на что?
Заменить x:\loc\ на букву какого диска?
Автор: TCPIP
Дата сообщения: 21.07.2007 00:26
NIKZZZZ

Цитата:
Используй короткие имена файлов - вместо %i поставь %~si .

Что-то не пойму, а что это дает, точка-то все равно остается. Поясните подробнее, пожалуйста. Имеется в виду, в цикле? Где здесь?
Автор: NIKZZZZ
Дата сообщения: 21.07.2007 00:57
TCPIP

Цитата:
Что-то не пойму, а что это дает, точка-то все равно остается


Код: @Echo Off
For %%a in (*.rar) Do Call :_UR "%%~sa" "%%~na"
GoTo :EOF

:_UR
Set ext1=%~x2
Set nam1=%~n2
if /i "%ext1%" == ".part001" GoTo :_UR1
if /i "%ext1%" == ".part01" GoTo :_UR1
if /i "%ext1%" == ".part1" GoTo :_UR1
if /i "%ext1%" == "" GoTo :_UR1
GoTo :EOF
:_UR1
echo RAR x %1 %Nam1%\
::RAR x %1 %Nam1%\
pause>nul
GoTo :EOF
Автор: Nagual
Дата сообщения: 21.07.2007 12:41
мужики помогите с фором
есть:
set ext=xls rar zip
список может продолжаться далее

нужно
echo *.xls
echo *.rar
echo *.zip
...
Автор: 01MDM
Дата сообщения: 21.07.2007 12:51
Nagual


Код:
for /f "tokens=1-3 delims= " %%i in ('echo %ext%') do (
echo %%i
echo %%j
echo %%k
)
Автор: Elroir
Дата сообщения: 21.07.2007 13:18
Nagual
01MDM
А для того, чтобы не ограничиваться 26 буквами, надо сделать так:

Код:
set ext=xls rar zip
for %%a in (%ext%) do echo *.%%a
Автор: Nagual
Дата сообщения: 21.07.2007 13:20
01MDM
спс, но не гибко

рашил задачу сам
for %%a in (%ext%) do echo %%a
всем спс

Добавлено:
Elroir
да оно самое, спс, пока писал оказалось, что ты уже ответил

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Автозагрузка терминальной сессии


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