Можно ли использовать конвейер (|) в скобках команды for?
» Задачи на bat-файлах 6
koderr
Цитата:
Можно, используй 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
Цитата:
Можно ли использовать конвейер (|) в скобках команды 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
Maza_Faka
Цитата:
Я немного непонимал код, ponand обьяснил мне.
Ребята, меня всё устраивает , даже очень.
Большое спасибо.
Цитата:
Вопрос звучал так:
Цитата:
Надо создать новую папку, и в неё перенести все эти файлы по папкам , которые будут называться (папки) 1, 2, 3 , ... , числами в порядке возростания.
Что конкретно не устраивает?
Я немного непонимал код, ponand обьяснил мне.
Ребята, меня всё устраивает , даже очень.
Большое спасибо.
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
Спасибо - интересная идея с
Код:
@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
Здравствуйте мозги Ru.Board!
Порылся я в этой теме и не нашол ответ на мой вопрос, может потомучто плохо искал или потомучто в ЭТОЙ ТЕМЕ 6 ЧАСТЕЙ
А вопрос у меня такой: я передаю в БАТ файл полный адресс к другому файлу и хочу с помощью БАТ выдернуть из этого пути толко нужную мне инфу, к примеру полный путь выглядит так : D:\Programmierung\JAVA\test\HalloTester.java
вот из него то мне и нужно выдернуть последнюю директорию, в данном случае test
и имя файла но без расширения, в данном случае HalloTester
Помогите мне пожалуйста, срочно надо а помощи больше не откуда получить кроме как Ru.Board так как google тут совсем не рулит
Спасибо за рание!!!
Порылся я в этой теме и не нашол ответ на мой вопрос, может потомучто плохо искал или потомучто в ЭТОЙ ТЕМЕ 6 ЧАСТЕЙ
А вопрос у меня такой: я передаю в БАТ файл полный адресс к другому файлу и хочу с помощью БАТ выдернуть из этого пути толко нужную мне инфу, к примеру полный путь выглядит так : D:\Programmierung\JAVA\test\HalloTester.java
вот из него то мне и нужно выдернуть последнюю директорию, в данном случае test
и имя файла но без расширения, в данном случае HalloTester
Помогите мне пожалуйста, срочно надо а помощи больше не откуда получить кроме как Ru.Board так как google тут совсем не рулит
Спасибо за рание!!!
AleksejTokarev
Код: for %%e in (D:\Programmierung\JAVA\test\HalloTester.java) do (
echo %%~ne
cd /d %%~dpe
)
for %%f in (%cd%) do echo %%~nf
pause
Код: for %%e in (D:\Programmierung\JAVA\test\HalloTester.java) do (
echo %%~ne
cd /d %%~dpe
)
for %%f in (%cd%) do echo %%~nf
pause
king_stiven
Вы немогли бы мне объеснит принцип работы этого кода, как он это отделил???
Вы немогли бы мне объеснит принцип работы этого кода, как он это отделил???
king_stiven
Код: for %%e in (D:\Programmierung\JAVA\test\HalloTester.java) do (
echo %%~ne
cd /d %%~dpe
)
Код: for %%e in (D:\Programmierung\JAVA\test\HalloTester.java) do (
echo %%~ne
cd /d %%~dpe
)
19w85
Цитата:
Без этой конструкции, переменная %cd% вернет тебе совершенно другую директорию
Цитата:
А зачем такая сложная конструкция для выделения одного имени файла без расширения из передаваемого полного пути?
Без этой конструкции, переменная %cd% вернет тебе совершенно другую директорию
Elroir
Цитата:
Ага, я это заметил почти сразу, когда начал батник тестировать
Все равно, так короче и понятнее, чем у king_stiven
Код: cd /d "%~dp1"
%~n1
Цитата:
Без этой конструкции, переменная %cd% вернет тебе совершенно другую директорию
Ага, я это заметил почти сразу, когда начал батник тестировать
Все равно, так короче и понятнее, чем у king_stiven
Код: cd /d "%~dp1"
%~n1
19w85
Код:
for %%f in (%cd%) do set "x=%%~nf"
Код:
for %%f in (%cd%) do set "x=%%~nf"
Serhiy123
Цитата:
Попробуй так:
Код:
@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
Цитата:
Но сам 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
king_stiven
спасибо за предложение. Действительно XXCopy показывает прогресс бар, и вообще, неплохая утилита. Есть небольшая "заковыка", не позволяющая мне ее применить - бесплатная версия полнофункциональна только при копировании файлов ВНУТРИ компьютера. Для "общения" с сетевыми дисками требуется дополнительное нажатие клавиши, которое и продолжит ее работу (если ничего не нажать, через 2 мин. утилита прекращает работу). Купите, говорит, PRO версию, и никаких вопросов...
Исходя из этого, повторю свой вопрос: мой батник копирует файл. Как визуализировать процесс его копирования (~100Mb и размер будет расти), что бы пользователь не заподозрил зависание машины и не начал "дергаться".
Есть ли rundll решение, или вызов WINAPI из под VBS или JavaScript? На "худой конец", пусть палочка вертится в углу экрана, , как когда-то в начале 90-х
спасибо за предложение. Действительно XXCopy показывает прогресс бар, и вообще, неплохая утилита. Есть небольшая "заковыка", не позволяющая мне ее применить - бесплатная версия полнофункциональна только при копировании файлов ВНУТРИ компьютера. Для "общения" с сетевыми дисками требуется дополнительное нажатие клавиши, которое и продолжит ее работу (если ничего не нажать, через 2 мин. утилита прекращает работу). Купите, говорит, PRO версию, и никаких вопросов...
Исходя из этого, повторю свой вопрос: мой батник копирует файл. Как визуализировать процесс его копирования (~100Mb и размер будет расти), что бы пользователь не заподозрил зависание машины и не начал "дергаться".
Есть ли rundll решение, или вызов WINAPI из под VBS или JavaScript? На "худой конец", пусть палочка вертится в углу экрана, , как когда-то в начале 90-х
Доброе время суток, помогите пожалуйста, задача запустить файл из расшаренной директории с правами определенной учетки:
\\directory\kidokiller.exe user:administrator password:123123123
Как то так... помогите плиз составить как положено.
Заранее спасибо
\\directory\kidokiller.exe user:administrator password:123123123
Как то так... помогите плиз составить как положено.
Заранее спасибо
Elroir
Спасибо!
Столько времени ломал голову в попытках избавиться от промежуточного файла, но знаний так и не хватило это сделать
Спасибо!
Столько времени ломал голову в попытках избавиться от промежуточного файла, но знаний так и не хватило это сделать
Ilyansk
Ну robocopy возьми. Бесплатная. У нее процентный индикатор копирования, циферки меняются.
Ну robocopy возьми. Бесплатная. У нее процентный индикатор копирования, циферки меняются.
satysaty
Runas /?
Runas /?
Maza_Faka
На практике конструкция упростилась до
Код:
for /R %%J in (.) do echo %%J | find /i "LPT3">Nul && Call :Founded "%%J"
:Founded
Set Path=%~dp1
Ren %Path% AUTORUN.INF
На практике конструкция упростилась до
Код:
for /R %%J in (.) do echo %%J | find /i "LPT3">Nul && Call :Founded "%%J"
:Founded
Set Path=%~dp1
Ren %Path% AUTORUN.INF
такой вот вопрос, из первого (инсталлятора) 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
в конце запрашиваю запуск второго (исполняемого с меню и выбором)
файл вызывается, но после выбора в меню не выполняются команды (пути до файлов относительные),а если запустить напрямую второй файл, то все нормально.
Что не так?
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
в конце запрашиваю запуск второго (исполняемого с меню и выбором)
файл вызывается, но после выбора в меню не выполняются команды (пути до файлов относительные),а если запустить напрямую второй файл, то все нормально.
Что не так?
magistrfet
Запусти батник, скопируй его и выложи здесь, укажи место где ошибка и что надо.
Запусти батник, скопируй его и выложи здесь, укажи место где ошибка и что надо.
Serhiy123
Цитата:
Ничего она не "держит", я проверял. Возможно дело в нестандартном названии каталога? Кстати, как ты его создаёшь, у меня не получается.
Цитата:
именно команда for "держит" каталог
Ничего она не "держит", я проверял. Возможно дело в нестандартном названии каталога? Кстати, как ты его создаёшь, у меня не получается.
Maza_Faka
Вопрос конечно может глупый но как мне прописать в батнике что необходимо... извините я в теме недавно =(
Вопрос конечно может глупый но как мне прописать в батнике что необходимо... извините я в теме недавно =(
упс - ошибся...
Добавлено: - чтоб мессага не пропадала :)
magistrfet
перед запуском последнего скрипта перейди в его каталог через CD /D "путь по которому переходим"
Добавлено: - чтоб мессага не пропадала :)
magistrfet
перед запуском последнего скрипта перейди в его каталог через CD /D "путь по которому переходим"
king_stiven
ошибки батника не посмотреть, т к он вызван другим батником, я так думаю, что при вызове второго батника в нем не понимаются относительные пути. Такое может быть? а при прямом его запуске (второго баника) файлы, с коротыми он работает относительно - понимаются.
ошибки батника не посмотреть, т к он вызван другим батником, я так думаю, что при вызове второго батника в нем не понимаются относительные пути. Такое может быть? а при прямом его запуске (второго баника) файлы, с коротыми он работает относительно - понимаются.
Maza_Faka
Я проверял с помощью Unlocker - при выполнении этого кода Unlocker показывает что каталог , содержащий искомый подкаталог LPT3 (с моем случае D:\AUTORUN.INF_) занят cmd.exe
Каталог с "неправильным именем" создается следующей конструкцией:
Код:
mkdir "\\?\D:\AUTORUN.INF\LPT3"
Я проверял с помощью Unlocker - при выполнении этого кода Unlocker показывает что каталог , содержащий искомый подкаталог LPT3 (с моем случае D:\AUTORUN.INF_) занят cmd.exe
Каталог с "неправильным именем" создается следующей конструкцией:
Код:
mkdir "\\?\D:\AUTORUN.INF\LPT3"
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
И всё таки запусти батник, если в начале батника есть команда
@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
Будте добры подскажите как сделать вывод сообщения
Код: Echo %1
Код: Echo %1
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
Я только заменил 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
K_AHTOH
Код:
echo %~dpn1.txt
Код:
echo %~dpn1.txt
А как запустить CMD с заданными параметрами окна? (кол-во строк, колонок, цвета) ведь винда где-то это помнит...
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Предыдущая тема: как сохранить сетевые настройки
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.