Не нужно извиняться, потому что вопрос, который вы подняли, сложнее, чем вы, вероятно, ожидаете.
Решение
Вот как вы можете проверить, что ваш пакетный файл находится в определенной папке, в вашем случае в папке Desktop:
@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. )
Что стоит отметить
Альтернативный способ нормализации пути (и мой любимый) это:
pushd "%~dp0" set BATCH_PATH=%CD% popd
- в любом случае, вы, вероятно, захотите удалить любой трейлинг
\
, что является одной из вещей, которые нормализация делает для вас
- в любом случае, вы, вероятно, захотите удалить любой трейлинг
используйте
%~dp0
переменную вместо%cd%
, потому что последняя семантика - это папка, в которой работают ваши скрипты, а первая - это папка, в которой находится ваш скрипт (что вы и просили)%0
дает вам местоположение вашего пакетного скрипта- добавляя
dp
(то есть%dp0
) вы запрашиваете диск и путь, в котором не указаны имя файла и расширение (что-то вроде этого,example.bat
и это будет обременительно на следующем шаге - проверка на равенство) - добавив,
~
вы просите удалить все открытия или закрытия,"
если это необходимо (т.е. путь содержит пробел)
пути обернуты,
"
чтобы предотвратить ошибки из-за возможного места в строке пути
Не так просто, как можно было бы подумать, верно?