2014-04-10 37 views

回答

2
set "myName=%~nx0" 

在批處理文件,%0是對批處理文件本身的引用。 %~nx0是批處理文件的名稱和擴展名。 for /?幫助包括您可以從文件中引用獲得的可能值的完整列表,作爲完整路徑,文件大小,時間戳,....

編輯 - 正如評論指出,使用shift命令(意在%9將較高的參數移到較低的參數後獲得對批處理文件參數的訪問權)%0的值會被%1的內容覆蓋,從而無法讀取其原始參考。因此,選項有

  • 發出shift命令

  • 如果擴展名被啓用,該shift命令允許指定從哪裏開始偏移參數之前獲取的價值,所以,而不是發出shift命令,使用shift /1指示%1會是怎樣的第一個參數覆蓋,保護%0

  • 在一個子程序調用獲取批處理文件的名稱。

myBatchFile.cmd

@echo off 
    rem shifting arguments 
    shift 

    rem Get reference to current batch file 
    call :getMyName 
    echo %myName% 

    exit /b 

:getMyName 
    set "myName=%~nx0" 
    exit /b 
+1

+1這可以起作用,除非'shift'命令已經發布。 – foxidrive

+0

@foxidrive,我忘了任何選項? –

+0

這有效。在使用shift之後用於獲取批處理文件名稱的方法是一種新穎的方法。工作很好。 – foxidrive

0

嘗試像

set "currentname=%~nx0" 
echo %currentname% 

或者

set "currentname=%~n0" 
echo %currentname% 
+1

兩個答案之間的區別是,第一個會給你的名字與擴展,沒有擴展名的第二個。 – JustGreat

+0

當然,echo%currentname%只是爲了顯示你的可變內容以進行調試,但是你可以從你的最終代碼中刪除它。 – JustGreat

相關問題