Discussione:
Eseguire una lista di bat????
(troppo vecchio per rispondere)
a***@gmail.com
2007-03-06 11:35:59 UTC
Permalink
Ciao a tutti e grazie per l'attenzione
Io vorrei se è possibile solo con i file batch in DOS eseguire una
serie di file BAT...

In pratica lo scenario è questo:

In una cartella ho una serie di bat così chiamati:

20070307_1230.bat
20070307_1300.bat
20070308_1430.bat
20070307_1530.bat
20070308_1430.bat
20070309_1530.bat

Vorre schedulare un altro file batch che trova i file tra quelli sopra
che iniziano con la data di oggi... tipo 20070307 e li esegua tutti.

Io riesco a trovarli con un semplice:

DEL PROG.BAT
DIR C:\Dir_1\%DATE_FORMATED%*.bat /S /B >> PROG.BAT

E provo ad eseguirli con:
CALL DDC_CONSOLE

Ma il file bat così generato è:
----------------------------------------------
C:\Dir_1\20070307_1230.bat
C:\Dir_1\20070307_1300.bat
C:\Dir_1\20070307_1530.bat
----------------------------------------------

E il mio problema è che viene eseguito solo il primo!!!
Qualcuno ha idee alternative o ha un modo per far eseguire tutti i bat
elencati ?

Aiuto!

Spero di essere stato chiaro, vi ringrazio per l'attenzione e spero
davvero in un consiglio.
Ciao a tutti,
Alberto
Gioacchino
2007-03-06 21:27:39 UTC
Permalink
Post by a***@gmail.com
Ciao a tutti e grazie per l'attenzione
Io vorrei se è possibile solo con i file batch in DOS eseguire una
serie di file BAT...
20070307_1230.bat
20070307_1300.bat
20070308_1430.bat
20070307_1530.bat
20070308_1430.bat
20070309_1530.bat
Vorre schedulare un altro file batch che trova i file tra quelli sopra
che iniziano con la data di oggi... tipo 20070307 e li esegua tutti.
DEL PROG.BAT
DIR C:\Dir_1\%DATE_FORMATED%*.bat /S /B >> PROG.BAT
CALL DDC_CONSOLE
----------------------------------------------
C:\Dir_1\20070307_1230.bat
C:\Dir_1\20070307_1300.bat
C:\Dir_1\20070307_1530.bat
----------------------------------------------
E il mio problema è che viene eseguito solo il primo!!!
Qualcuno ha idee alternative o ha un modo per far eseguire tutti i bat
elencati ?
Aiuto!
Spero di essere stato chiaro, vi ringrazio per l'attenzione e spero
davvero in un consiglio.
Ciao a tutti,
Alberto
#####

@echo off
echo.set g=%%1>a.bat
echo.set m=%%2>>a.bat
echo.set a=%%3>>a.bat
echo.a %date% >x.bat
echo.e104 20 >deb
echo.e107 20 >>deb
echo.w>>deb
echo.q>>deb
type deb|debug x.bat >nul
call x.bat
del x.bat
del deb
del a.bat
for %%f IN (%a%%m%%g%*.bat) DO call %%f
set a=
set m=
set g=

#####

--
alberto_new
2007-03-07 12:14:03 UTC
Permalink
Post by Gioacchino
Post by a***@gmail.com
Ciao a tutti e grazie per l'attenzione
Io vorrei se è possibile solo con i file batch in DOS eseguire una
serie di file BAT...
20070307_1230.bat
20070307_1300.bat
20070308_1430.bat
20070307_1530.bat
20070308_1430.bat
20070309_1530.bat
Vorre schedulare un altro file batch che trova i file tra quelli sopra
che iniziano con la data di oggi... tipo 20070307 e li esegua tutti.
DEL PROG.BAT
DIR C:\Dir_1\%DATE_FORMATED%*.bat /S /B >> PROG.BAT
CALL DDC_CONSOLE
----------------------------------------------
C:\Dir_1\20070307_1230.bat
C:\Dir_1\20070307_1300.bat
C:\Dir_1\20070307_1530.bat
----------------------------------------------
E il mio problema è che viene eseguito solo il primo!!!
Qualcuno ha idee alternative o ha un modo per far eseguire tutti i bat
elencati ?
Aiuto!
Spero di essere stato chiaro, vi ringrazio per l'attenzione e spero
davvero in un consiglio.
Ciao a tutti,
Alberto
#####
@echo off
echo.set g=%%1>a.bat
echo.set m=%%2>>a.bat
echo.set a=%%3>>a.bat
echo.a %date% >x.bat
echo.e104 20 >deb
echo.e107 20 >>deb
echo.w>>deb
echo.q>>deb
type deb|debug x.bat >nul
call x.bat
del x.bat
del deb
del a.bat
for %%f IN (%a%%m%%g%*.bat) DO call %%f
set a=
set m=
set g=
#####
--
Grazie!

avevo trovato nell'ispirazione del momento un:

SET YEAR=%DATE:~10,13%
SET MONTH=%DATE:~4,2%
SET DAY=%DATE:~7,2%
SET TIME_HH=%TIME:~0,2%
SET TIME_MM=%TIME:~3,2%
SET TIME_SS=%TIME:~6,2%

IF %TIME_HH%== 1 SET TIME_HH=01
IF %TIME_HH%== 2 SET TIME_HH=02
IF %TIME_HH%== 3 SET TIME_HH=03
IF %TIME_HH%== 4 SET TIME_HH=04
IF %TIME_HH%== 5 SET TIME_HH=05
IF %TIME_HH%== 6 SET TIME_HH=06
IF %TIME_HH%== 7 SET TIME_HH=07
IF %TIME_HH%== 8 SET TIME_HH=08
IF %TIME_HH%== 9 SET TIME_HH=09

SET DATE_FORMATED_SHORT=%YEAR%%MONTH%%DAY%

CD C:\dir_1\
for %%A in (%DATE_FORMATED_SHORT%*.bat) do CALL %%A

Però proverò anche la tua soluzione.
Ultima curiosità: come ti sembra il mio metodo per trovarmi la data?
Ho visto nei post precedenti che quello che mi hai postato tu è molto
gettonato... e quindi credo affidabile.

Grazie ancora,
Ciao
Alberto
Gioacchino
2007-03-08 14:46:26 UTC
Permalink
Post by alberto_new
Post by Gioacchino
Post by a***@gmail.com
Ciao a tutti e grazie per l'attenzione
Io vorrei se è possibile solo con i file batch in DOS eseguire una
serie di file BAT...
20070307_1230.bat
20070307_1300.bat
20070308_1430.bat
20070307_1530.bat
20070308_1430.bat
20070309_1530.bat
Vorre schedulare un altro file batch che trova i file tra quelli
sopra che iniziano con la data di oggi... tipo 20070307 e li
esegua tutti.
DEL PROG.BAT
DIR C:\Dir_1\%DATE_FORMATED%*.bat /S /B >> PROG.BAT
CALL DDC_CONSOLE
----------------------------------------------
C:\Dir_1\20070307_1230.bat
C:\Dir_1\20070307_1300.bat
C:\Dir_1\20070307_1530.bat
----------------------------------------------
E il mio problema è che viene eseguito solo il primo!!!
Qualcuno ha idee alternative o ha un modo per far eseguire tutti
i bat elencati ?
Aiuto!
Spero di essere stato chiaro, vi ringrazio per l'attenzione e
spero davvero in un consiglio.
Ciao a tutti,
Alberto
#####
@echo off
echo.set g=%%1>a.bat
echo.set m=%%2>>a.bat
echo.set a=%%3>>a.bat
echo.a %date% >x.bat
echo.e104 20 >deb
echo.e107 20 >>deb
echo.w>>deb
echo.q>>deb
type deb|debug x.bat >nul
call x.bat
del x.bat
del deb
del a.bat
for %%f IN (%a%%m%%g%*.bat) DO call %%f
set a=
set m=
set g=
#####
--
Grazie!
SET YEAR=%DATE:~10,13%
SET MONTH=%DATE:~4,2%
SET DAY=%DATE:~7,2%
SET TIME_HH=%TIME:~0,2%
SET TIME_MM=%TIME:~3,2%
SET TIME_SS=%TIME:~6,2%
IF %TIME_HH%== 1 SET TIME_HH=01
IF %TIME_HH%== 2 SET TIME_HH=02
IF %TIME_HH%== 3 SET TIME_HH=03
IF %TIME_HH%== 4 SET TIME_HH=04
IF %TIME_HH%== 5 SET TIME_HH=05
IF %TIME_HH%== 6 SET TIME_HH=06
IF %TIME_HH%== 7 SET TIME_HH=07
IF %TIME_HH%== 8 SET TIME_HH=08
IF %TIME_HH%== 9 SET TIME_HH=09
SET DATE_FORMATED_SHORT=%YEAR%%MONTH%%DAY%
CD C:\dir_1\
for %%A in (%DATE_FORMATED_SHORT%*.bat) do CALL %%A
Però proverò anche la tua soluzione.
Ultima curiosità: come ti sembra il mio metodo per trovarmi la data?
Ho visto nei post precedenti che quello che mi hai postato tu è molto
gettonato... e quindi credo affidabile.
Grazie ancora,
Ciao
Alberto
Direi così:
set YEAR=%date:~6,4%
set MONTH=%date:~3,2%
set DAY=%date:~0,2%

e per la conversione da spazio a 0:
set TIME_HH=%TIME_HH: =0%

Con l'altro metodo è possibile con delle piccole modifiche farlo
funzionare anche con il vecchio dos. Invece di operare sulla variabile
d'ambiente %date%, si può scrivere la variabile d'ambiente su file e
poi giocare con il debug. Se non hai esigenze di compatibilità
all'indietro, va benissimo la sottostringa di una variabile.


--

Loading...