2009-12-20 10 views
7

i hanno scritto uno script batch come qui di seguitoPer loop in Windows 3.1 DOS

for -f %%a in ('dir /b') do command 

Questo script funziona in Windows XP, ma ora voglio eseguirlo in Windows 3.11.

Segnala un errore di sintassi; sembra che il DOS di Windows 3.1 non supporti `per -f %% a in ('comando').

Potete suggerire quale comando è possibile utilizzare in Windows 3.1 per ottenere funzionalità equivalenti?

+6

Perché su _earth_ stai utilizzando Windows 3.1? – SLaks

+0

Forse sta collegando vari SO di dinosauri su una singola rete come ho fatto per la mia classe di Networking. –

+0

Si sta utilizzando Windows 3.1 o Windows For Workgroups 3.11? – SLaks

risposta

1

Sei corretto; questa sintassi non è supportata da Windows 3.1.
È stato aggiunto da cmd.exe in Windows NT.

Non penso che troverete un comando equivalente incluso in Windows 3.1.
EDIT: mi sono sbagliato; vedi la risposta di Abel.

Perché stai utilizzando un sistema operativo pre-storico?

8

In DOS 5.0, non è possibile utilizzare un comando all'interno della parte IN (...) dell'istruzione. Che cosa si può fare è il seguente però:

FOR -F %%A IN (*.txt) DO command 

che eseguirà la command per ogni file con estensione txt. In altre parole, il comando dir è implicito.

Ho ricevuto queste informazioni dal DOS 5. di Jeff Prosise. Al momento indispensabile, ora piuttosto polveroso. Mai saputo che lo avrei mai usato di nuovo ;-)

EDIT: sembrava che l'indirezione (vedere la cronologia) non fosse necessaria. La dichiarazione di cui sopra è tutto ciò di cui hai bisogno. Ad esempio, il seguente funziona e stampa ogni file:

FOR -F %%A IN (*.txt) DO TYPE %%A 
+0

Una piccola nota: dovrebbe essere * nessuna virgola * attorno a * *.txt', quelli non erano supportati al momento (spazi in nomi di file o nomi di file lunghi non erano comunque supportati). – Abel

+0

L'equivalente alla domanda originale sarebbe '(*)', non '(* .txt)'. –

+1

Abel: Mentre le virgolette non esistevano, gli spazi erano effettivamente legali nei nomi dei file MS-DOS: http://blogs.msdn.com/oldnewthing/archive/2009/07/09/9825126.aspx – Joey