Precisa de ajuda para criar um arquivo .bat para executar tarefas do SAS

0

Usando o Windows 7, eu preciso de um arquivo .bat que irá executar arquivos em uma pasta sempre que eu colocá-los lá. por exemplo, quero que ele execute arquivos com um sufixo .sas e renomeie-os assim que executados. Eu quero que os programas rodem em seqüência, não simultaneamente. Eu estou enferrujado na minha programação de morcegos.

Eu posso executar o seguinte,

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

mas agora deseja um loop e a capacidade de fazer com que ele faça todos os programas .SAS na pasta. Algo como

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

Pensamentos, links ou código de exemplo?

    
por Randy 18.05.2014 / 21:03

1 resposta

0

Aqui está algo que eu criei, eu não testei nada disso, mas dou um giro, como se fosse loop até que você o mate:

@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.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

Este é um site que achei ser informativo sobre for loops e outras perguntas relacionadas a lotes: link

    
por 20.05.2014 / 09:55