Não é preciso se desculpar, pois a pergunta que você fez é mais complicada do que você espera.
Solução
É assim que você pode testar se o seu arquivo de lote está localizado em uma pasta específica, no seu caso na pasta 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.
)
Coisas a serem observadas
-
caminho alternativo para normalizar o caminho (e meu favorito) é:
pushd "%~dp0" set BATCH_PATH=%CD% popd
- em qualquer caso, você provavelmente deseja remover qualquer
\
, que é uma das coisas que a normalização faz para você
- em qualquer caso, você provavelmente deseja remover qualquer
-
use a variável
%~dp0
em vez de%cd%
, porque a última semântica é a pasta em que seus scripts operam enquanto a primeira é a pasta em que seu script está localizado (que é o que você pediu)-
%0
fornece seu local de script em lote - adicionando
dp
(ou seja,%dp0
) você solicita disco e caminho que omite o nome do arquivo e a extensão (que é algo comoexample.bat
e seria fardo no próximo passo - verificação da igualdade) - ao adicionar
~
, peça para remover qualquer abertura ou fechamento"
, se necessário (ou seja, o caminho contido no espaço)
-
-
os caminhos estão agrupados em
"
para evitar erros devido a possíveis espaços na cadeia de caminho
Não tão simples como se pensaria, certo?