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

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

Автор: koderr
Дата сообщения: 23.02.2009 12:21
Можно ли использовать конвейер (|) в скобках команды for?
Автор: Maza_Faka
Дата сообщения: 23.02.2009 13:03
koderr

Цитата:
Можно ли использовать конвейер (|) в скобках команды for?

Можно, используй escape-символ перед конвеером ^|

Добавлено:
Serhiy123
Попробуй так:

Код:
@Echo Off

for /R %%J in (.) do (
echo %%J | find /i "LPT3">Nul && Call :Founded "%%J"
)

:Founded
set NAMEOFDIR=%1
set NAMEOFDIR=%NAMEOFDIR:~3,-8%
echo %NAMEOFDIR%
ren %NAMEOFDIR% AUTORUN.INF
Exit /B
Автор: ikif
Дата сообщения: 23.02.2009 13:38
Maza_Faka

Цитата:
Вопрос звучал так:


Цитата:
Надо создать новую папку, и в неё перенести все эти файлы по папкам , которые будут называться (папки) 1, 2, 3 , ... , числами в порядке возростания.



Что конкретно не устраивает?


Я немного непонимал код, ponand обьяснил мне.
Ребята, меня всё устраивает , даже очень.
Большое спасибо.
Автор: Serhiy123
Дата сообщения: 23.02.2009 14:06
Maza_Faka

Спасибо - интересная идея с


Код:
@Echo Off

for /R %%J in (.) do (
echo %%J | find /i "LPT3">Nul && Call :Founded "%%J"
)

:Founded
set NAMEOFDIR=%1
set NAMEOFDIR=%NAMEOFDIR:~3,-8%
echo %NAMEOFDIR%
ren %NAMEOFDIR% AUTORUN.INF
Exit /B
Автор: AleksejTokarev
Дата сообщения: 23.02.2009 14:59
Здравствуйте мозги Ru.Board!

Порылся я в этой теме и не нашол ответ на мой вопрос, может потомучто плохо искал или потомучто в ЭТОЙ ТЕМЕ 6 ЧАСТЕЙ

А вопрос у меня такой: я передаю в БАТ файл полный адресс к другому файлу и хочу с помощью БАТ выдернуть из этого пути толко нужную мне инфу, к примеру полный путь выглядит так : D:\Programmierung\JAVA\test\HalloTester.java
вот из него то мне и нужно выдернуть последнюю директорию, в данном случае test
и имя файла но без расширения, в данном случае HalloTester

Помогите мне пожалуйста, срочно надо а помощи больше не откуда получить кроме как Ru.Board так как google тут совсем не рулит

Спасибо за рание!!!
Автор: king_stiven
Дата сообщения: 23.02.2009 15:36
AleksejTokarev

Код: for %%e in (D:\Programmierung\JAVA\test\HalloTester.java) do (
echo %%~ne
cd /d %%~dpe
)
for %%f in (%cd%) do echo %%~nf
pause
Автор: AleksejTokarev
Дата сообщения: 23.02.2009 15:52
king_stiven

Вы немогли бы мне объеснит принцип работы этого кода, как он это отделил???
Автор: 19w85
Дата сообщения: 23.02.2009 19:02
king_stiven

Код: for %%e in (D:\Programmierung\JAVA\test\HalloTester.java) do (
echo %%~ne
cd /d %%~dpe
)
Автор: Elroir
Дата сообщения: 23.02.2009 21:07
19w85

Цитата:
А зачем такая сложная конструкция для выделения одного имени файла без расширения из передаваемого полного пути?

Без этой конструкции, переменная %cd% вернет тебе совершенно другую директорию
Автор: 19w85
Дата сообщения: 23.02.2009 21:43
Elroir

Цитата:
Без этой конструкции, переменная %cd% вернет тебе совершенно другую директорию

Ага, я это заметил почти сразу, когда начал батник тестировать
Все равно, так короче и понятнее, чем у king_stiven

Код: cd /d "%~dp1"
%~n1
Автор: Elroir
Дата сообщения: 24.02.2009 02:32
19w85

Код:
for %%f in (%cd%) do set "x=%%~nf"
Автор: Maza_Faka
Дата сообщения: 24.02.2009 06:33
Serhiy123

Цитата:
Но сам ren теперь не работает:

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

Код:
@Echo Off

for /R %%J in (.) do echo %%J | find /i "LPT3">Nul && Call :Founded "%%J"
GoTo :EOF

:Founded
Set "DirName=%~n1"
Set "Path=%~dp1"

CD /D "%Path%"
Ren "%DirName%" AUTORUN.INF
GoTo :EOF
Автор: Ilyansk
Дата сообщения: 24.02.2009 06:47
king_stiven
спасибо за предложение. Действительно XXCopy показывает прогресс бар, и вообще, неплохая утилита. Есть небольшая "заковыка", не позволяющая мне ее применить - бесплатная версия полнофункциональна только при копировании файлов ВНУТРИ компьютера. Для "общения" с сетевыми дисками требуется дополнительное нажатие клавиши, которое и продолжит ее работу (если ничего не нажать, через 2 мин. утилита прекращает работу). Купите, говорит, PRO версию, и никаких вопросов...
Исходя из этого, повторю свой вопрос: мой батник копирует файл. Как визуализировать процесс его копирования (~100Mb и размер будет расти), что бы пользователь не заподозрил зависание машины и не начал "дергаться".
Есть ли rundll решение, или вызов WINAPI из под VBS или JavaScript? На "худой конец", пусть палочка вертится в углу экрана, , как когда-то в начале 90-х
Автор: satysaty
Дата сообщения: 24.02.2009 07:48
Доброе время суток, помогите пожалуйста, задача запустить файл из расшаренной директории с правами определенной учетки:

\\directory\kidokiller.exe user:administrator password:123123123


Как то так... помогите плиз составить как положено.
Заранее спасибо
Автор: 19w85
Дата сообщения: 24.02.2009 08:08
Elroir
Спасибо!
Столько времени ломал голову в попытках избавиться от промежуточного файла, но знаний так и не хватило это сделать
Автор: igor_andreev
Дата сообщения: 24.02.2009 08:11
Ilyansk
Ну robocopy возьми. Бесплатная. У нее процентный индикатор копирования, циферки меняются.
Автор: Maza_Faka
Дата сообщения: 24.02.2009 08:36
satysaty
Runas /?
Автор: Serhiy123
Дата сообщения: 24.02.2009 12:25
Maza_Faka

На практике конструкция упростилась до


Код:
for /R %%J in (.) do echo %%J | find /i "LPT3">Nul && Call :Founded "%%J"

:Founded
Set Path=%~dp1
Ren %Path% AUTORUN.INF
Автор: magistrfet
Дата сообщения: 24.02.2009 14:01
такой вот вопрос, из первого (инсталлятора) bat файла, где запрашивается диск (с,d), на котором есть каталог куда все копировать,
echo Please enter your disk letter where soft has been installed:
set /p "ans=Enter your letter: "

echo processing...moving...
move /y .\Firmware\*.* "%ans%:\Program Files\Firmware" > nul
md "%ans%:\Program Files\files" > nul
move /y .\Firmware\files\*.* "%ans%:\Program Files\Firmware\files" > nul

echo Done...starting menu...
start cmd /c "%ans%:\Program Files\Firmware\updater.bat"
exit

в конце запрашиваю запуск второго (исполняемого с меню и выбором)

файл вызывается, но после выбора в меню не выполняются команды (пути до файлов относительные),а если запустить напрямую второй файл, то все нормально.
Что не так?
Автор: king_stiven
Дата сообщения: 24.02.2009 15:12
magistrfet
Запусти батник, скопируй его и выложи здесь, укажи место где ошибка и что надо.
Автор: Maza_Faka
Дата сообщения: 24.02.2009 15:54
Serhiy123

Цитата:
именно команда for "держит" каталог

Ничего она не "держит", я проверял. Возможно дело в нестандартном названии каталога? Кстати, как ты его создаёшь, у меня не получается.
Автор: satysaty
Дата сообщения: 24.02.2009 15:58
Maza_Faka
Вопрос конечно может глупый но как мне прописать в батнике что необходимо... извините я в теме недавно =(

Автор: yurkesha
Дата сообщения: 24.02.2009 15:59
упс - ошибся...

Добавлено: - чтоб мессага не пропадала :)
magistrfet
перед запуском последнего скрипта перейди в его каталог через CD /D "путь по которому переходим"
Автор: magistrfet
Дата сообщения: 24.02.2009 16:11
king_stiven
ошибки батника не посмотреть, т к он вызван другим батником, я так думаю, что при вызове второго батника в нем не понимаются относительные пути. Такое может быть? а при прямом его запуске (второго баника) файлы, с коротыми он работает относительно - понимаются.
Автор: Serhiy123
Дата сообщения: 24.02.2009 16:35
Maza_Faka

Я проверял с помощью Unlocker - при выполнении этого кода Unlocker показывает что каталог , содержащий искомый подкаталог LPT3 (с моем случае D:\AUTORUN.INF_) занят cmd.exe

Каталог с "неправильным именем" создается следующей конструкцией:

Код:
mkdir "\\?\D:\AUTORUN.INF\LPT3"
Автор: king_stiven
Дата сообщения: 24.02.2009 16:51
magistrfet
И всё таки запусти батник, если в начале батника есть команда
@echo off
убери её, чтоб батник не закрылся вставь в конец команду pause
откроется чёрное окошечко, пойдёт батник, потом правой мышкой "выделить всё" потом на заголовке батника "копировать" и присылай сюда всё или ту часть , где вероятней проблемы есть. Поверь, сэкономишь себе и другим пару суток. Или жди гуру типа Elroir или Игорь Андреев. Посмотри вариант yurkesha выше.


Добавлено:
Serhiy123

Код: @Echo Off
for /f "tokens=*" %%J in ('dir /b /s /a:d') do (
set NAMEOFDIR=%%J
echo %%J | find /i "LPT3">Nul && Call :Founded
)
GoTo :EOF
:Founded
ren %NAMEOFDIR:~3,-5% AUTORUN.INF
Автор: K_AHTOH
Дата сообщения: 24.02.2009 19:58
Будте добры подскажите как сделать вывод сообщения

Код: Echo %1
Автор: Serhiy123
Дата сообщения: 24.02.2009 20:35
king_stiven - супер! Спасибо большое - работают оба варианта.

Я только заменил Call на безусловный переход Goto, чтобы цикл не докручивался до конца после нахождения LPT3. Окончательный вариант выглядит так:

Код:
for /f "tokens=*" %%J in ('dir /b /s /a:d') do (
set NAMEOFDIR=%%J
echo %%J | find /i "LPT3">Nul && Goto :Founded
)

:Founded
ren %NAMEOFDIR:~3,-5% AUTORUN.INF
Автор: Elroir
Дата сообщения: 25.02.2009 01:07
K_AHTOH

Код:
echo %~dpn1.txt
Автор: Ilyansk
Дата сообщения: 25.02.2009 06:06
А как запустить CMD с заданными параметрами окна? (кол-во строк, колонок, цвета) ведь винда где-то это помнит...

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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