我的bat文件中有以下內容。說使用bat命令的子串
設置路徑= C:\ TEMP \測試
所以基本上我想有一個輸出,這將使我結果爲C:\ TEMP \
我沒有找到蝙蝠任何的indexOf相當於命令。
謝謝。
我的bat文件中有以下內容。說使用bat命令的子串
設置路徑= C:\ TEMP \測試
所以基本上我想有一個輸出,這將使我結果爲C:\ TEMP \
我沒有找到蝙蝠任何的indexOf相當於命令。
謝謝。
背景:
>set fullname=c:\mypath\oldfile
>set changedname=%fullname:oldfile=newfile%
>echo %changedname%
c:\mypath\newfile
適用於問題:
> set fullname=c:\mypath\oldfile
> set pathonly=%fullname:oldfile=%
> echo %pathonly%
c:\mypath\
真的讓我希望4DOS仍然存在的問題。不過,我在alt.msdos.batch.nt
中發現了一些可能的幫助。 set
的手冊頁似乎包含大部分相同的信息。 (命令help set
)
set test=123456789
rem extract chars 0-5 from the variable test
set test=%test:~0,5%
echo %test%
(注:在Windows XP SP3測試)
樸素子有,你有你的每一個改變路徑的時間來調整他們的問題,它不是一個通用的解決問題。
下面的批處理文件給出的概念可能會怎麼做路徑的截斷部分的證明:
@echo off
set foo=C:\Temp\Test
call :strip
echo %foo%
goto :eof
:strip
if not "%foo:~-1%"=="\" (
set foo=%foo:~0,-1%
goto :strip
)
goto :eof
它是硬編碼到一個變量,但如果需要的話,很容易固定。
這裏的核心部分是strip
子例程,它循環並切斷字符串的最後一個字符,直到找到反斜槓。這有效地消除了路徑的最後部分。
你爲什麼要這樣做?
Johannes'答案是一個可能的解決方案,但也許你是指被(或可以)作爲參數傳遞給腳本,在這種情況下,你可以使用下面的語法的路徑:
REM Extracts the drive and path from argument %1
SET p=%~dp1
另外,您可以結合..
和腳本路徑(%0
):
REM Sets p to a sibling of the script directory
SET p=%~dp0..\test