Sie müssen sich nicht entschuldigen, da die von Ihnen aufgeworfene Frage schwieriger ist, als Sie wahrscheinlich erwarten.
Lösung
So können Sie testen, ob sich Ihre Stapeldatei in einem bestimmten Ordner befindet, in Ihrem Fall im Desktop-Ordner:
@echo off :: Normalize this batch script's path set BATCH_PATH=%~dp0 set BATCH_PATH=%BATCH_PATH:~0,-1% :: Test for equality if "%BATCH_PATH%"=="%USERPROFILE%\Desktop" ( echo This file is on Desktop. ) else ( echo This file is not on Desktop. )
Dinge zu beachten
Eine alternative Möglichkeit, den Pfad (und meinen Favoriten) zu normalisieren, ist:
pushd "%~dp0" set BATCH_PATH=%CD% popd
- In jedem Fall möchten Sie wahrscheinlich das Nachlaufen entfernen. Dies
\
ist eine der Aktionen, die die Normalisierung für Sie leistet
- In jedem Fall möchten Sie wahrscheinlich das Nachlaufen entfernen. Dies
Verwenden Sie
%~dp0
stattdessen die Variable%cd%
, da die letzte Semantik der Ordner ist, in dem Ihre Skripts ausgeführt werden, während sich der erste Ordner in dem Ordner befindet, in dem sich Ihr Skript befindet (was Sie verlangt haben).%0
gibt Ihnen den Speicherort Ihres Batch-Skripts- Durch das Hinzufügen
dp
(dh%dp0
) fragen Sie nach Datenträger und Pfad, der den Dateinamen und die Erweiterung weglässt (was in etwaexample.bat
der Fall ist und im nächsten Schritt eine Belastung darstellen würde - Gleichheitsprüfung). - indem
~
Sie hinzufügen, dass Sie aufgefordert werden, eventuell geöffnete oder schließende Objekte zu entfernen"
(dh der Pfad enthält Leerzeichen)
Pfade werden eingeschlossen
"
, um Fehler aufgrund von möglichem Speicherplatz in der Pfadzeichenfolge zu vermeiden
Nicht so einfach, wie man dachte, oder?