Показать полную графическую версию : Bat Получить строку, перейти и запустить
Привет, будьте добры подскажите как можно сделать такое:
Есть список (list.txt) такого типа,
C:\Users\oleg\Desktop\папка\июль\1\test.exe
C:\Users\oleg\Desktop\папка\июль\22\test.exe
Как можно получить первую строку, перейти по этому пути, удалить эту строку, и запустить exe файл.
Файл test.exe всегда с одним названием.
nikis, зачем надо «переходить»?
«Удалить строку» точно не выйдет, нет такой возможности у пакетных файлов (только обходными путями). А оно надо — удалять?
nikis, зачем надо «переходить»? »
А как по другому запускать можно?
Желательно удалять, для того чтобы второй раз не запустился exe с этой папки.
А как по другому запускать можно? »
Как обычно — по полному пути.
Желательно удалять, для того чтобы второй раз не запустился exe с этой папки. »
А зачем ему запускаться второй раз?
Вам нужно было изложить проблему, а не выбранный метод решения.
А так — держите:
@echo off
setlocal enableextensions enabledelayedexpansion
set sListFile=list.txt
if exist "%sListFile%" (
for /f "usebackq delims=" %%i in ("%sListFile%") do (
if exist "%%~i" (
start "" /wait "%%~i"
) else (
echo File [%%~i] not found.
)
)
) else (
echo Can't find list file [%sListFile%].
exit /b 1
)
endlocal
exit /b 0
megaloman
29-06-2019, 19:55
можно получить первую строку, перейти по этому пути, удалить эту строку, и запустить exe файл. »Буквально следую Вашим пожеланиям@Echo Off
Set "List=Z:\Box_In\list.txt"
:Begin
FOR %%f IN ("%List%") DO If %%~zf==0 Exit /B
FOR /F "usebackq delims=" %%i IN ("%List%") DO (
Set "Exe=%%i"
Pushd "%%~dpi"
>"%List%.tmp" More +1 "%List%"
>nul Move /Y "%List%.tmp" "%List%"
GoTo :Cont
)
:Cont
%Exe%
Popd
pause
rem GoTo :Begin
Exit /BЕсли надо чтобы батник запускал программы сам пока есть строки в list.txt, уберите rem
Если в путях файлов возможны пробелы и нет ключей, необходимо вместо %Exe% написать "%Exe%", либо в файле list.txt путь указывать в кавычках.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.