Jump to content

Hilfe bei Batch Erstellung


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen,

 

ich bin auf der Suche nach einem bereits bestehenden Batch auf folgenden Befehl gestossen, den ich leider nicht verstehe und auch nicht recht weiss wie ich danach suchen soll :(

 

if ("%Fullpath:~199,10%") GTR ("") echo %fullpath%

 

Diese Zeile ist Teil eines Skript, welches mir Dateinamen (Pfadstruktur) mit einer Länge über 200 Zeilen ausgeben soll.

 

GTR etc. ist klar, ich verstehe die if Klausel vorallem nicht... vorallem das "Zeichen" ":~".

 

Kann mir wer bitte helfen?

Dank & Gruss

Link zu diesem Kommentar

Hi,

 

hier noch das gesamte Skript

 

@echo off
:: Aufruf beispiel1 [Laufwerk:] 
for /F %%i in ('dir %1\ /b /s') do call :loop %%i
goto end

:loop
set Fullpath=%1
if ("%Fullpath:~199,10%") GTR ("") echo %fullpath% >>d:\groesser200.lst
:end

 

@Master: ja das sollte nun klar sein...

 

@all: aber irgendwie leuchtet mir das noch nicht so ganz ein...

Man holt also die ersten 200 Zeichen, da wäre wohl besser von 0-199? und schaut dann, ob die grösser sind als "", also als quasi nichts? Und da werden dann nur die ausgegeben, welche die 200 Zeichen auch füllen?

 

Ich steh wohl gewaltig auf nem Schlauch :confused:

 

Gruss

Link zu diesem Kommentar

Noch eine Hinweis zu dem Script.

Enthält der Pfad ein Leerzeichen vor dem 200ten Zeichen wird der Pfad nicht erkannt.

 

So sollte es auch dann gehen:

@echo off
:: Aufruf beispiel1 [Laufwerk:] 
for /F [b]"tokens=*"[/b] %%i in ('dir %1\ /b /s') do call :loop %%i
goto end

:loop
set Fullpath=[b]%*[/b]
if ("%Fullpath:~199,10%") GTR ("") echo %fullpath% >>d:\groesser200.lst
:end

thorgood

Link zu diesem Kommentar

Hi thorgood,

 

danke für den Hinweis... dann bringt mir das ganze natürlich nichts. Müsste deine Version nun auch mit Leerzeichen funktionieren?

Allerdings verstehe ich nicht, wieso im loop der fullpath auf * gesetzt wird?

 

Gruss

Haennerson

 

EDIT: Ja so klappts nun, aber der Stern ist mir immer noch nicht ganz klar (bei tokens schon, nur unten nicht).

Link zu diesem Kommentar

Ergänzung bzw. Alternative zu thorgood's Lösung:

 

@echo off
:: Aufruf beispiel1 [Laufwerk:] 
for /F "delims=" %%i in ('dir %1\ /b /s') do call :loop "%%i"
goto :eof

:loop
set Fullpath=%~1
if ("%Fullpath:~199,10%") GTR ("") echo %fullpath% >>d:\groesser200.lst
goto :eof

 

@Haennerson:

Ich fände das auch guten Stil, die Quelle des Fund-Batches mit anzugeben.

Oder, eigentlich noch besser, die Rückfrage direkt in dem Forum zu stellen, in dem dieses Beispiel gepostet war.

Pfadtiefe auslesen - administrator

 

Gruß

Biber,

der auch in anderen Foren diesen Nick hat ;)

 

Im selben Forum habe ich auch nach der oben angegebenen Jugendsünde im Bereich "Batch & Shell" die kleine Tut-Serie "Workshop Batch for Runaways" gepostet. Teil 1 behandelt diese FindLongPath-Klamotte ausführlich.

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...