PDA

Visualizza la versione completa : [batch] ciclare su files


wallrider
30-12-2013, 14:05
ciao a tutti
il mio problema è questo
ho vari files txt chiamati pippo_20131001 pippo_20131002 pippo_20131003 etc.
Li vorrei consolidare su base mensile ottenendo pollo_201310.log
Pensavo che la cosa più veloce da fare fosse ciclare su ciascun file pippo e reindirizzarne il contenuto in pollo tramite il comando TYPE.
Per praticità vorrei farlo via batch. Non riesco però ad utilizzare il FOR.
Ho trovato millanta esempi nella forma tipo questo http://www.robvanderwoude.com/for.php

speravo di poter fare così ma già nella prima prova
@for %miofile in (dir files\pollo*) DO echo %miofile

ottengo l'errore
miofile was unexpected at this time.

cosa sbaglio?

grazie

denis76
31-12-2013, 18:17
Hai provato con
type pippo*.quelcheé > c:\poppi.log

MItaly
31-12-2013, 21:10
Se scrivi un for in un file batch devi mettere due % prima della variabile (questo dipende dal fatto che il parser batch è un accrocchio scritto quando ancora il DOS girava sui 386, ma non si può sistemare perché si romperebbe la compatibilità con i file batch esistenti).

Occhio comunque che non è garantito che l'ordine fornito da dir (o dai wildcard nell'argomento passato a type) sia alfabetico... che io sappia è vero sui volumi NTFS, ma (1) non è garantito, e (2) su volumi FAT non accade. Con dir, dovresti passare il flag /O:N per essere sicuro che l'ordine sia quello atteso (alfabetico).

wallrider
01-01-2014, 19:25
Hai provato con
type pippo*.quelcheé > c:\poppi.log
si, alla fine ho risolto così, ma il ciclo for potrebbe servirmi in altre occasioni

grazie

wallrider
01-01-2014, 19:26
Se scrivi un for in un file batch devi mettere due % prima della variabile (questo dipende dal fatto che il parser batch è un accrocchio scritto quando ancora il DOS girava sui 386, ma non si può sistemare perché si romperebbe la compatibilità con i file batch esistenti).
...
ho modificato così
for %%m in (dir files\pollo*) DO echo %%m
e funziona. grazie mille

avevo trovato nelle guide la storia del doppio % ma non ci avevo capito niente

MItaly
02-01-2014, 00:15
ho modificato così
for %%m in (dir files\pollo*) DO echo %%m
e funziona. grazie mille
:ciauz:


avevo trovato nelle guide la storia del doppio % ma non ci avevo capito niente
Perché in effetti non ha nessun senso; in sostanza, in un file batch nel for (e solo nel for) metti il doppio %, se invece lo scrivi "a mano" ci va un % solo (se non ricordo male).

Loading