Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Bat Получить строку, перейти и запустить (http://forum.oszone.net/showthread.php?t=341085)

nikis 29-06-2019 06:42 2877299

Bat Получить строку, перейти и запустить
 
Привет, будьте добры подскажите как можно сделать такое:
Есть список (list.txt) такого типа,

C:\Users\oleg\Desktop\папка\июль\1\test.exe
C:\Users\oleg\Desktop\папка\июль\22\test.exe

Как можно получить первую строку, перейти по этому пути, удалить эту строку, и запустить exe файл.
Файл test.exe всегда с одним названием.

Iska 29-06-2019 07:56 2877301

nikis, зачем надо «переходить»?

«Удалить строку» точно не выйдет, нет такой возможности у пакетных файлов (только обходными путями). А оно надо — удалять?

nikis 29-06-2019 10:35 2877313

Цитата:

Цитата Iska
nikis, зачем надо «переходить»? »

А как по другому запускать можно?

Желательно удалять, для того чтобы второй раз не запустился exe с этой папки.

Iska 29-06-2019 14:07 2877330

Цитата:

Цитата nikis
А как по другому запускать можно? »

Как обычно — по полному пути.

Цитата:

Цитата nikis
Желательно удалять, для того чтобы второй раз не запустился 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 2877381

Цитата:

Цитата nikis
можно получить первую строку, перейти по этому пути, удалить эту строку, и запустить 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 путь указывать в кавычках.


Время: 18:53.

Время: 18:53.
© OSzone.net 2001-