В Windows 7 мне нужен файл .bat, который будет запускать файлы в папке всякий раз, когда я помещаю их туда. например, я хочу, чтобы он выполнял файлы с суффиксом .sas, а затем переименовывал их после выполнения. Я хочу, чтобы программы запускались последовательно, а не одновременно. Я ржавый на моем программировании летучей мыши.

Я могу запустить следующее,

cd C:\Users\ABC\Dropbox\XYZ\Runlibrary
timeout /t 15
"C:\Program Files\SASHome2-94\SASFoundation\9.4\sas.exe"  -sysin  "program5.sas"
ren "program5.sas" "program5.done"

но теперь хочу петлю и возможность сделать все это.SAS программы в папке. Что-то вроде

do (the following 1 million times) 
timeout /t 15
for %f in (*.sas) do "C:\Program Files\SASHome2-94\SASFoundation\9.4\sas.exe"  -sysin  "%f"
for %f in (*.sas) do ren "*.sas" "*.done"

Мысли, ссылки или пример кода?

1 ответ1

0

Вот кое-что, что я приготовил, я не проверял ничего из этого, но повернул его, поскольку он должен зацикливаться, пока вы его не убьете:

@echo off
:: Setting max_count to '0' makes this an infinite loop, you can set it to 10000000 if you want or leave it at 0
set max_count=0

:: Location where the .sas files are stored; '.' means current directory
set sas_dir=.

:: counter should be '0' 
set counter=0

:: Starting the loop
:start_loop
set /a counter+=1

:: Looking for .sas files to execute
if exist "%sas_dir%\*.sas" for /f "tokens=1* delims=" %%f in ('dir /b /o:n /a:-d "%sas_dir%\*.sas"') do (
    echo INFO: Running %%f
    call "C:\Program Files\SASHome2-94\SASFoundation\9.4\sas.exe" -sysin "%%~pnxf"
    rename "%%~pnxf" "%%~pnf.done"
)

:: Stats
echo INFO: Looped Count: %counter%; Reloop Time: 15 secs

:: Waiting 15 secs to reloop
timeout /t 15 >nul

:: Checking Max Counter
if "%max_count%"=="%counter%" (
    echo INFO: Looping completed with "%max_count%" counts, exiting...
    goto end
)

:: relooping
goto start_loop

:end

Вот сайт, который я нашел информативным for циклов и других вопросов, связанных с партиями: http://judago.webs.com/batchforloops.htm

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .