suche sowas wie get.length um eine bestimmte zeilenlaenge einer Batch-Datei auszulesen...
ich muss im prinzip 2 pfade die ich mittels einer schleife in eine .txt datei geschrieben habe auslesen, diese sehen z.b. so aus:
<xxx>/daten1/daten2/gemeinsamgenutz
<xxx>/daten1/daten2/
in ein verzeichnis der art soll das obere verzeichnis verschoben werden:
//<xxx>/gemeinsam/
im weiteren schritt soll ich die dateien mittels robocopy in ein verzeichnis verschieben.
Das ganze halt wegen den Rechten auf verschiedene Verzeichnisse.
Ich wollte jetzt zuerst die länge der beiden pfade vergleichen, also später sinds mehr, die beliebig aussehen können.
den längeren pfad dann nehmen und schauen in welchem unterverzeichnis der liegt und das verzeichnis dann verschieben.
Meine erste Idee war mittels aus Java oder C bekanntem length befehl, ich wollte das ganze auch möglichst machen ohne ein C-Programm, was ich zu schreiben hätte, um nur damit den befehl dann zu machen.
Wenns nach möglichkeit schon ein Programm gibt, das dies ermöglicht, würde ich das installieren.
Thx für die Hilfe jaque
<xxx>/daten1/daten2/gemeinsamgenutz
<xxx>/daten1/daten2/
in ein verzeichnis der art soll das obere verzeichnis verschoben werden:
//<xxx>/gemeinsam/
im weiteren schritt soll ich die dateien mittels robocopy in ein verzeichnis verschieben.
Das ganze halt wegen den Rechten auf verschiedene Verzeichnisse.
Ich wollte jetzt zuerst die länge der beiden pfade vergleichen, also später sinds mehr, die beliebig aussehen können.
den längeren pfad dann nehmen und schauen in welchem unterverzeichnis der liegt und das verzeichnis dann verschieben.
Meine erste Idee war mittels aus Java oder C bekanntem length befehl, ich wollte das ganze auch möglichst machen ohne ein C-Programm, was ich zu schreiben hätte, um nur damit den befehl dann zu machen.
Wenns nach möglichkeit schon ein Programm gibt, das dies ermöglicht, würde ich das installieren.
Thx für die Hilfe jaque
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 41707
Url: https://administrator.de/contentid/41707
Ausgedruckt am: 17.11.2024 um 19:11 Uhr
6 Kommentare
Neuester Kommentar
Moin jaque,
willkommen im Forum.
Auch wenn es Dich vielleicht enttäuscht - so etwas wie eine Length()-Funktion gibt es nicht und auch die beiden Workarounds, die ich anbieten könnte, sind alles andere als elegant.
Strategie a) in einer FOR /L..IN..DO-Anweisung solange den Wert von SubString(%path%, x) mit "leer" vergleichen, bis Du sicher bist, dass das Ende des Strings erreicht ist. Ists albern, aber funktioniert.
Strategie b) [die verwende ich in den seltenen Fällen, in denen ich die Länge eines Variablenwertes brauche]:
Den Variablenwert mit "Echo" in eine Temp-Datei schreiben. Länge per DIR-Befehl ermitteln, 2 Zeichen für CRLF abziehen.
Beispiel im Batch:
Nicht gerade elegant, aber kommt ohne zusätzliches Tool o.ä. aus.
Gruß
Biber
willkommen im Forum.
Auch wenn es Dich vielleicht enttäuscht - so etwas wie eine Length()-Funktion gibt es nicht und auch die beiden Workarounds, die ich anbieten könnte, sind alles andere als elegant.
Strategie a) in einer FOR /L..IN..DO-Anweisung solange den Wert von SubString(%path%, x) mit "leer" vergleichen, bis Du sicher bist, dass das Ende des Strings erreicht ist. Ists albern, aber funktioniert.
Strategie b) [die verwende ich in den seltenen Fällen, in denen ich die Länge eines Variablenwertes brauche]:
Den Variablenwert mit "Echo" in eine Temp-Datei schreiben. Länge per DIR-Befehl ermitteln, 2 Zeichen für CRLF abziehen.
Beispiel im Batch:
@echo off & setlocal
echo %userprofile%>%temp%\getlen.tmp
for %%i in ("%temp%\getlen.tmp") do set /a "theLen=%%~zi-2" & del %temp%\getlen.tmp
echo Debugmsg: Length of ["%userprofile%"] is %theLen%.
Nicht gerade elegant, aber kommt ohne zusätzliches Tool o.ä. aus.
Gruß
Biber
Rückfragen:
- das erste Token (dieses "xx.toplevelN") hat keinen Einfluss auf die Verarbeitung?
- reicht denn das Kriterium "Länge"? Oder meinst Du vielmehr die Anzahl der Pfad-Ebenen unterhalb "server\pathN$"?
Denn "server\path1$\hier hat einer einen langen Verzeichnisnamen genonmen" ist zwar länger als "Server\path1\sub1\sub3\April\TonGun\FürElise", aber.....
Gruß
Biber
- das erste Token (dieses "xx.toplevelN") hat keinen Einfluss auf die Verarbeitung?
- reicht denn das Kriterium "Länge"? Oder meinst Du vielmehr die Anzahl der Pfad-Ebenen unterhalb "server\pathN$"?
Denn "server\path1$\hier hat einer einen langen Verzeichnisnamen genonmen" ist zwar länger als "Server\path1\sub1\sub3\April\TonGun\FürElise", aber.....
Gruß
Biber