{title}

Hallo zusammen, ich versuche, in einer Batchdatei nach einer Reihe von Verzeichnissen zu suchen. Wenn die Anzahl der Verzeichnisse einer bestimmten Anzahl entspricht, wird das Skript fortgesetzt, wenn nicht, sollte es beendet werden. So etwas wie thisIf (dir/AD/B | wc -l) = 6 goto contexit: contblah blahEs scheint kein wc -l-Äquivalent in Windows cmd zu geben !! Ich habe ein Hilfsprogramm llc.exe gefunden, das die Zeilen zählt Ich kämpfe aber mit der Struktur. Könnte ich das Ergebnis in einen String schreiben und ein "if string1 == 6 goto cont" machen? Ihre Hilfe wäre dankbarTIARichso = o =

Hier ist eine native Cmd-Lösung: (Funktioniert, wenn "# ~ #" in keinem Ordnernamen enthalten ist.) Für/f-Tokens = "%% a in ('dir/b. ^ | Find/v/c" # ~ # "') setze count = %% aif"% count% "==" 6 "(gehe zu: cont) else (echo. & gehe zu: exit): cont: exitset count =: eofIch habe wc noch nicht ausprobiert .hoffentlich hilft das

Hallo uli_glueckJa, dein Code funktioniert fast! Das Problem ist, dass die if-Anweisung nach% count% ein zusätzliches Leerzeichen enthält, so dass du unten "6" erhältst. Die if-Anweisung schlägt dann fehl und wird beendet. Ich schätze, ich könnte nach der zweiten 6 Platz schaffen, habe mich aber gefragt, ob Sie wissen, was den ersten Platz verursachen könnte. Ich kann es nicht selbst sehen.wenn "6" == "6" (goto: cont) else (echo. & Goto: exit) ThanksRichso = o =

Oh, Entschuldigung. Ich hatte dieses Problem noch nicht. Sie können versuchen, {% count%} == {6} (goto: cont) else (echo. & Goto: exit) orif {"% count%"} == {" 6 "} (goto: cont) else (echo. & Goto: exit) Ich habe keine Maschine mit einem cmd zu Hause, daher kann ich es im Moment nicht versuchen. Für dieses Problem muss es eine Problemumgehung geben. (Heute ist Feiertag, ich bin also nicht im Büro.) :-) Wenn dies nicht funktioniert, können Sie count =% count: =% dosieren Leerzeichen in der Variablen count.Maybe nicht so elegant, sollte aber funktionieren.hope dies helpsuli

Hallo Uli, ein weiteres Problem mit deinem Code. Es scheint NICHT zweistellig zu sein. Wenn Sie die Zahl, mit der Sie übereinstimmen, so einstellen, dass sie 12 lautet -> {"% count%"} GEQ {"12"} und% count% auf 9 steht, fällt die Logik um. Ich vermute, dass es sich nur um die erste Zahl handelt und 9 größer als 1 ist. Irgendwelche Ideen, wie man diese lösen kann, bitte? Mit freundlichen GrüßenRichso = o =

Das Erwähnen Ihres Betriebssystems wäre hilfreich gewesen. In jedem Fall könnte dies auf Ihrem Computer funktionieren, obwohl ich nicht sicher bin, warum es so redundant sein muss. Code: @echo offset count = 0for/d %% a in ('dir/a: d% cd%' ) do (call set/a count = %% count %% + 1) echo Anzahl der Unterordner:% count% 8-)

Hallo SidewinderIch dachte, ich hätte mein Betriebssystem in meinem OP erwähnt, auf jeden Fall Windows 2000. Der Grund dafür, dass es "so redundant" sein muss, ist, dass das Skript im Grunde eine Inhaltsbereitstellung durchführt. Ich verwende Robocopy, um die eigentliche Bereitstellung durchzuführen, aber bevor dies möglich ist, muss ich wissen, dass der Inhalt vollständig vorhanden ist. Der beste Weg, dies zu tun, besteht darin, die Mindestanzahl von Verzeichnissen zu testen. Ich lösche den Quellcode nach jeder Bereitstellung und kopiere statische Inhalte zurück, bevor die neuen Inhalte später hinzugefügt werden. Warum verwenden wir keine ordnungsgemäße Inhaltsbereitstellungs-App? Ich höre die Frage, nicht meine Wahl. Ich kann Sie versichern! Nochmals vielen DankRichso = o =

Der zuvor veröffentlichte Code war falsch. Die Ergebnisse waren unabhängig vom verwendeten Verzeichnis gleich. Das sollte in Ordnung sein. Code: @echo offset count = 0for/f %% a in ('dir/a: d/b "% cd%"') do (Aufruf set/a count = %% count %% + 1 ) echo Anzahl der Unterordner:% count% Ich habe Ihre Anfrage nicht als redundant bezeichnet. Es war in Bezug auf den Code, den ich gepostet habe. Tut mir leid wegen der Verwirrung. 8-)

SidewinderAm Ende Ihres Codes verwende ich: if "% count%" GEQ "22" (goto: cont else (echo. & Goto: failed) Die% count% wird jedoch auf 10 gesetzt, was bedeutet, dass es fehlschlagen sollte (dh es sollte) ist kleiner als 22), aber es ist nicht so, dass nur die erste Zahl verglichen wird (dh 1 ist kleiner als 2) Was denkst du? RegardsRichso = o =

Sie könnten versuchen, all diese unordentlichen s loszuwerden (count hat einen Wert, auch wenn er Null sein könnte). Auch die Syntax der IF-Anweisung ist falsch: Code: if% count% GEQ 22 (goto: cont) else (echo. & Goto: failed) Es ist zweifelhaft, dass nur die erste signifikante Ziffer im Vergleich verwendet wird. Viel Glück. 8-)

USB 2.0-Anschlüsse, die als 1.1 angezeigt werden?

Hallo. Ich habe einen XP-Computer mit SP3 installiert. Aber ich glaube, ich hatte dieses Problem vor SP3. Ich habe mehrere USB 2.0-Anschlüsse und sie sind 2.0, auf dem Gehäuse als solche gekennzeichnet und im Geräte-Manager auch "standard erweiterter PCI-zu-USB-Host-Controller" - bedeutet das, dass es 2.0 ist, oder? Wenn ich jedoch etwas an den Port anschließe, wird die Meldung "Dieses Gerät kann schneller arbeiten" angezeigt. Ich habe ein paar Dinge über die Neuinstallation der Treiber gesehen, die auf der win xp-CD zu finden wären - danke im Voraus

Die Treiber werden im Treibercache in den Systemordnern gespeichert, machen Sie sich also keine Sorgen um die XP-CD. Die Treiber müssen möglicherweise nur aktualisiert werden. Meine haben dies einige Male getan. Ziehen Sie alle USB-Geräte außer Maus und Tastatur ab. Andernfalls können Sie offensichtlich nichts tun. In diesem Fall benötigen Sie eine handliche PS/2-Maus und -Tastatur, da hierfür die USB-Treiber deinstalliert werden müssen Unten werden Ihre USB-Controller angezeigt. Deinstallieren Sie sie von oben nach unten. Wenn Sie mit der rechten Maustaste auf die Elemente klicken und Deinstallieren auswählen, wird eine Fehlermeldung angezeigt. Dies ist jedoch kein Grund zur Sorge. Klicken Sie bei allen auf USB bezogenen Treibern auf OK Wurde das Gerät entfernt, starten Sie es neu und die USB-Treiber werden automatisch neu installiert. Versuchen Sie es dann erneut mit Ihren USB-Geräten.

Überprüfen Sie, ob die BIOS-Einstellung auf "Legacy" gesetzt ist. oder die usb 2 funktion ist möglicherweise deaktiviert.

Danke, hat einwandfrei funktioniert!

Beliebte Beiträge