안녕하세요. 저는 배치 파일을 처음 접했습니다. 이 질문이 어리석어 보인다면 죄송합니다. 하지만 정말 도움이 필요합니다.
따라서 예를 들어 지정된 폴더에 있는지 확인하려면 배치 스크립트가 필요합니다 %userprofile%\Desktop
. 나는 그것이 자신의 파일 이름에 신경쓰는 것을 원하지 않습니다. 어디서부터 시작해야할지 전혀 모르겠습니다. 나는 현재 경로/파일 이름 등을 얻는 방법을 알고 있지만 그것이 내가 아는 전부입니다. 프로그램이 현재 경로와 해당 경로가 있는지 확인하려는 경로를 비교하게 하려면 어떻게 해야 합니까? 아니면 또 다른 효율적인 방법이 있나요?
내가 달성하고 싶은 것은 다음과 같습니다.
if this file is in Desktop folder(
echo It's here
)else(
echo It's not here
)
도움을 주시면 감사하겠습니다. 모두에게 감사드립니다.
답변1
제기한 질문이 예상보다 까다롭기 때문에 사과할 필요는 없습니다.
해결책
다음은 배치 파일이 특정 폴더(예: 데스크톱 폴더)에 있는지 테스트하는 방법입니다.
@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
다음 단계에서 부담이 될 것입니다 - 동일성 검사).~
필요한 경우 열기 또는 닫기를 제거하도록 요청합니다 ("
예: 경로에 공백이 포함됨).
"
경로 문자열의 가능한 공간으로 인한 오류를 방지하기 위해 경로가 래핑됩니다.
생각만큼 간단하지는 않죠?
답변2
다음을 사용한 최소 작업 예 %cd%
:
IF %cd%==%userprofile%\Desktop (
ECHO It's here
) ELSE (
ECHO It's not here
)
중간 변수 사용:
FOR /F "tokens=*" %%a in ('cd') do SET CURRENT_DIR=%%a
IF %CURRENT_DIR%==%userprofile%\Desktop (
ECHO It's here
) ELSE (
ECHO It's not here
)
어디서부터 시작해야할지 모르겠다고 하셨으므로 여기에 좋은 자료가 있습니다. https://en.wikibooks.org/wiki/Windows_Batch_Scripting