2009-12-20 11 views
7

he escrito un script por lotes, como a continuaciónbucle en Windows 3.1 DOS

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

Este script funciona en Windows XP, pero ahora quiero ejecutarlo en Windows 3.11.

Da un error de sintaxis; parece que el DOS de Windows 3.1 no es compatible con `para -f %% a in ('comando').

¿Puede sugerir qué comando puedo usar en Windows 3.1 para lograr una funcionalidad equivalente?

+6

¿Por qué en _earth_ está utilizando Windows 3.1? – SLaks

+0

Tal vez está conectando varios sistemas operativos de dinosaurios en una sola red como lo hice para mi clase de Networking. –

+0

¿Está utilizando Windows 3.1 o Windows For Workgroups 3.11? – SLaks

Respuesta

1

Tiene razón; esta sintaxis no es compatible con Windows 3.1.
Fue agregado por cmd.exe en Windows NT.

No creo que encuentre un comando equivalente incluido con Windows 3.1.
EDIT: Estaba equivocado; ver la respuesta de Abel.

¿Por qué está utilizando un sistema operativo tan prehistórico?

8

En DOS 5.0, no puede usar un comando dentro de la IN (...) parte de la instrucción. Lo que puede hacer es la siguiente embargo:

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

que ejecutará el command para cada archivo con la extensión txt. En otras palabras, el comando dir está implícito.

Obtuve esta información de DOS de Jeff Prosise 5. En ese momento indispensable, ahora bastante polvoriento. Nunca supe que volvería a usarlo ;-)

EDITAR: parecía que la indirección (ver historial) no era necesaria. La declaración anterior es todo lo que necesitas. Es decir, lo siguiente funciona e imprime cada archivo:

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

Una pequeña nota: debe haber * sin comillas * alrededor de '*.txt', esos no eran compatibles en ese momento (espacios de nombres de archivos o nombres de archivo largos no eran compatibles de todos modos). – Abel

+0

El equivalente a la pregunta original sería '(*)', no '(* .txt)'. –

+1

Abel: Si bien las comillas no existían, los espacios eran legales en los nombres de archivo de MS-DOS: http://blogs.msdn.com/oldnewthing/archive/2009/07/09/9825126.aspx – Joey

Cuestiones relacionadas