현재 배치 파일이 특정 폴더에 있는지 확인하는 방법은 무엇입니까?

현재 배치 파일이 특정 폴더에 있는지 확인하는 방법은 무엇입니까?

안녕하세요. 저는 배치 파일을 처음 접했습니다. 이 질문이 어리석어 보인다면 죄송합니다. 하지만 정말 도움이 필요합니다.

따라서 예를 들어 지정된 폴더에 있는지 확인하려면 배치 스크립트가 필요합니다 %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

관련 정보