Anzahl der Zeichen in einem vollständigen Dateipfad zählen?

Anzahl der Zeichen in einem vollständigen Dateipfad zählen?

Ich muss in der Lage sein, die Anzahl der Zeichen in einem vollständigen Pfad zu einer Datei in Windows zu zählen. Wie ich diese Aufgabe derzeit erledige, ist wie folgt:

  1. Öffnen Sie eine Eingabeaufforderung
  2. Wechseln Sie mit cd in das entsprechende Verzeichnis (zum Beispiel c:\CruiseControl\ProjectArtifacts\ProjectName)
  3. Geben Sie den folgenden Befehl ein dir /s /b > output.csv
  4. Öffnen Sie die resultierende Datei output.csv in Excel.
  5. verwenden Sie die=LÄNGE()Funktion in Excel zum Zählen der Anzahl der Zeichen pro Zeile, wie in der Datei output.csv aufgeführt.

Kennt jemand eine Explorer-Shell-Erweiterung oder ein Drittanbieter-Tool, das diese Funktion ausführen könnte, ohne dass ich die Ausgabe von dir in Excel bearbeiten muss? Gibt es eine einfachere Möglichkeit, dies zu tun? Die Ursache meines Problems ist die Dateipfadbeschränkung von ~260 Zeichen in Windows. Ich versuche zu analysieren, welche Pfade ungefähr ~260 Zeichen lang sind, damit ich sie kürzen kann, um diesen Fehler zu vermeiden.

Antwort1

So etwas lässt sich sehr einfach mitHamilton C-Schale. Wenn dies eine einmalige Sache ist, werden Sie mit dem zufrieden seinFreie Version. Hier ist ein Beispiel, das die vollständigen Pfade mehrerer Dateien im c:\WindowsVerzeichnis generiert und dann die Zeichenfolgenlängen berechnet. Vollständige Offenlegung: Ich bin der Autor.

128 C% cd
c:\Windows
129 C% ls mi*
Microsoft.NET      Minidump           mib.bin
130 C% foreach i ( mi* )
131 C? @ f = fullpath ( i )
132 C? echo $i $f $strlen(f)
133 C? end
mib.bin c:\Windows\mib.bin 18
Microsoft.NET c:\Windows\Microsoft.NET 24
Minidump c:\Windows\Minidump 19
134 C%

Antwort2

Vielleicht sind diese einfachen Batchdateien hilfreich.

1) Zählen der Anzahl der Zeichen im aktuellen Verzeichnis:

@echo off
echo %cd%>"%TMP%\Temp.txt"
for %%l in ("%TMP%\Temp.txt") do set /a len=%%~zl
del "%TMP%\Temp.txt"
set /a len-=2
echo Path length = %len% chars.

cdin das Verzeichnis und rufen Sie einfach die Batchdatei auf.

2) Zählen der Anzahl der Zeichen im angegebenen Verzeichnis:

@echo off
echo %1>"%TMP%\Temp.txt"
for %%l in ("%TMP%\Temp.txt") do set /a len=%%~zl
del "%TMP%\Temp.txt"
set /a len-=4
echo Path length = %len% chars.

Rufen Sie die Batchdatei auf und übergeben Sie ihr den vollständigen Pfad als Argument (achten Sie darauf, Anführungszeichen zu verwenden, wenn der Pfad Leerzeichen enthält). Beachten Sie, dass keine Fehlerprüfung durchgeführt wird. Wenn Sie also die Anführungszeichen weglassen, wenn der Pfad Leerzeichen enthält, wird eine falsche (niedrige) Anzahl ausgegeben, und wenn Sie am Ende zusätzliche Backslashes hinzufügen, wird die Anzahl erhöht.

Antwort3

Dies ist zwar keine Antwort auf Ihre Frage, aber es geht auf Ihr Problem ein. Geben Sie

dir /s /b | findstr -r ...............................................................................................................................................................................................................................................................

In meiner obigen Abbildung habe ich 255 Punkte eingegeben. Dadurch wird das dir /s /bbereits bekannte Ergebnis erzielt und nur die Zeilen (Dateipfadnamen) angezeigt, die mindestens 255 Zeichen lang sind. Passen Sie die Anzahl der Punkte nach Belieben an. Natürlich können Sie die Ausgabe des obigen Beispiels zum Drucken oder für andere Analysen in eine Datei umleiten.

verwandte Informationen