Jump to content
Sign in to follow this  
Haennerson

Hilfe bei Batch Erstellung

Recommended Posts

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

Share this post


Link to post
Share on other sites

Es wäre sinnvoll, das gesamte Script (am Besten im erweiterten Beitragseditor in Programmcodetags) zu posten.

 

Dann kann man nachvollziehen, welche Variablen wo erstellt werden.

Share this post


Link to post
Share on other sites

Hallo Haennerson,

 

folgendes Beispiel sollte selbsterklärend sein:

 

set testvar=1234567890abcde[color="Red"]fghijklmno[/color]pqrstuvwxyz
echo %testvar:~15,10%

[b]ergibt diese Ausgabe:[/b]

fghijklmno

klar oder ?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Hi,

 

nicht ganz. Die Tilde ~ entnimmt Teile einer Zeichenkette.

In deine Fall werden 10 Zeichen ab dem 200ten Zeichen entnommen.

Ist die Zeichenkette %Fullpath% länger als 200 Zeichen enthält der Rückgabewert etwas

und die Bedingung if ("%Fullpath:~199,10%") GTR ("") ist wahr.

 

thorgood

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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).

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

@thorgood

Öhhm... heißt das, ich muss diesen Krempel jetzt auf diese unsägliche PowerShell umstellen?

 

Oder hat M$ seit Vista endlich diese Problemchen mit Pfadlängen jenseits der 250 Zeichen im Griff?

:rolleyes:

 

Grüße

Biber

Share this post


Link to post
Share on other sites

*SichvornKoppKlatsch

 

JETZT habe ich es gesehen....*grmpf*.... wie doch die Zeit vergeht....

 

...und dennoch .... noch 19 Stunden bis zum Wochenende...

 

Grüße & Danke

Biber

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...