2016-04-15 4 views
0

Ich wollte den letzten Schrägstrich einer Verzeichniszeichenfolge entfernen, so dass ich denselben Pfad für das forfiles-Tool verwende, um alte Dateien zu löschen. Ich habe die Lösung here versucht, aber es hat nicht funktioniert. Das Skript speichert die Ausgabe in einer Textdatei, so dass ich das Ergebnis sehe. Die Forefiles funktionieren nicht, da das Verzeichnis ein falsches Format hat. Was ich nur den letzten Rückwärtsstrich entfernen möchte "C:\Database\Backup\".Wie wird der letzte Schrägstrich einer Verzeichniszeichenfolge in einer Stapeldatei verknüpft?

Der ausführbare Code unten ist, was ich versucht habe. Das Problem ist, die Linie 6 gibt "C:\Database\Backup\" :~0,-1 statt "C:\Database\Backup"

set BACKUP_DIR="C:/Database/Backup/" 
set LOG_FILE=%BACKUP_DIR%log_file.txt 
if not exist BACKUP_DIR mkdir %BACKUP_DIR% 
set BACKWARD_SLASH_DIR=%BACKUP_DIR:/=\% 
echo %BACKWARD_SLASH_DIR% > %LOG_FILE% 
set DELETE_DIR=%BACKWARD_SLASH_DIR%:~0,-1% 
echo %DELETE_DIR% >> %LOG_FILE% 
forfiles -p %DELETE_DIR% -s -m *.* -d -1 -c "cmd /c echo Deleted @file" >> %LOG_FILE% 
forfiles -p %DELETE_DIR% -s -m *.* -d -1 -c "cmd /c del @path" 
+4

'DELETE_DIR =% BACKWARD_SLASH_DIR%: ~ 0, -1%' -zu viele% Symbole, entfernen Sie die nach _DIR – TessellatingHeckler

+0

Wenn ich das mache, ist die Ausgabe '" C: \ Database \ Backup \ "' – wondie

+0

Are Sie sind sicher, dass die Ausgabe nicht "C: \ Database \ Backup \" ist und das nachfolgende Zitat abgeschnitten ""? Das erwarte ich jetzt. Versuchen Sie '~ 0, -2%' ... – TessellatingHeckler

Antwort

1

Dies ist ein gutes Beispiel dafür, warum sollten Sie immer set "variable=value" mit dem "variable=value" Paar zitiert. Auf diese Weise sind die Anführungszeichen nicht Teil des Variablenwerts und Sie können bei Bedarf explizit "%variable%" angeben. Es entfernt auch Mehrdeutigkeiten und stellt sicher, dass am Ende des Werts keine abschließenden Leerzeichen versehentlich hinzugefügt werden. Tatsächlich, in dem Code, den Sie eingefügt haben, gibt es einen zusätzlichen Platz am Ende Ihrer set BACKWARD_SLASH_DIR=%BACKUP_DIR:/=\% Linie.

Verwandte Themen