2009-12-20 11 views
7

ja napisałem skrypt wsadowy jak poniżejNa pętli w Windows 3.1 DOS

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

Skrypt działa w systemie Windows XP, ale teraz chcę go uruchomić w Windows 3.11.

Daje błąd składni; wygląda na to, że DOS systemu Windows 3.1 nie obsługuje `for -f %% a in ('command').

Czy możesz zasugerować, jakie polecenie można użyć w systemie Windows 3.1, aby uzyskać równoważną funkcjonalność?

+6

Dlaczego na _earth_ używasz systemu Windows 3.1? – SLaks

+0

Może podłącza różne systemy dinozaurów do jednej sieci, tak jak zrobiłem to dla mojej klasy Networking. –

+0

Czy używasz systemu Windows 3.1 lub Windows For Workgroups 3.11? – SLaks

Odpowiedz

1

Masz rację; ta składnia nie jest obsługiwana przez system Windows 3.1.
Został dodany przez cmd.exe w Windows NT.

Nie sądzę, że znajdziesz odpowiednik polecenia dołączonego do systemu Windows 3.1.
EDIT: Myliłem się; zobacz odpowiedź Abla.

Dlaczego korzystasz z takiego prehistorycznego systemu operacyjnego?

8

W DOS 5.0 nie można użyć polecenia wewnątrz części IN (...) instrukcji. Co ty może zrobić jest następujący choć:

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

który wykona command dla każdego pliku z rozszerzeniem txt. Innymi słowy, polecenie dir jest niejawne.

Mam tę informację z DOS 5. Jeffa Prosise. W czasie niezbędnym, teraz raczej zakurzony. Nigdy nie wiedziałem, że kiedykolwiek użyję tego ponownie ;-)

EDYCJA: okazało się, że nie jest konieczne obejście (patrz historia). Powyższe stwierdzenie jest wszystkim, czego potrzebujesz. Oznacza to, że następujące pliki i wydruki każdego pliku:

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

Mała uwaga: powinno być * bez cudzysłowu * wokół '*.txt', nie były one obsługiwane w tym czasie (spacje w nazwach plików lub długie nazwy plików i tak nie były obsługiwane). – Abel

+0

Odpowiednikiem pierwotnego pytania będzie "(*)", a nie "(* .txt)". –

+1

Abel: Podczas gdy cytaty nie istniały, spacje były rzeczywiście legalne w nazwach plików MS-DOS: http://blogs.msdn.com/oldnewthing/archive/2009/07/09/9825126.aspx – Joey