0

バッチ コマンドを使用して、文字列からフォルダー パス/ディレクトリを取得するにはどうすればよいですか?

たとえば、"C:\user\blah\abc.txt" という文字列がある場合、"C:\user\blah\" のように文字列を分割してフォルダ部分だけを取得するにはどうすればよいですか?

バッチ ファイルのコマンド ラインで文字列 "C:\user\blah\abc.txt" を渡す場合、その文字列をフォルダー部分だけに分割するにはどうすればよいですか?

REM // Grab "C:\user\blah\abc.txt" from the command line
SET path="%*" 
REM // The following doesn't successfully capture the "C:\user\blah\" part
SET justFolder=%path:~dp1%
4

2 に答える 2

1

~dp オプションは、バッチ パラメーター (%1 %2 ...) または FOR 置換パラメーター (%%a %%b ...) でのみ機能します。読んでくださいHELP CALL

したがって、目的を達成するには、次のコードを試してください

call :setJustFolder "%*"
echo %justFolder%
goto :eof

:setJustFolder
set justFolder=%~dp1
goto :eof

余談ですが、私の個人的な好みは、ユーザーが入力したファイル名の前後に " を追加しないことです。以前のコードを次のように単純にコーディングします。

set justFolder=%~dp1
echo %justFolder%
于 2012-05-10T05:24:50.547 に答える
1

文字列または現在の作業ディレクトリからパスを取得する場合は、ほぼ同じです。

set "myPath=%~dp1"
echo %myPath%

または、変数から取得したい場合は、FOR/F.

set myPath=C:\windows\xyz.txt
for /F "delims=" %%A in ("%myPath%") do echo %%~dpA
于 2012-05-10T05:26:25.570 に答える