バッチスクリプトを使用してファイルをNASに自動的にバックアップしていますが、「C:\ Things\Folder」から「Folder」などの絶対パスから最後のフォルダー名を取得する必要があります。
4328 次
3 に答える
5
ちょっとしたハックですが、次のものを使用できます。
Set NasPath=C:\Things\Folder
Set NasFolder=%NasPath%
:GetFolder
Set GetFolderTemp=%NasFolder:*\=%
If Not %GetFolderTemp%==%NasFolder% (
Set NasFolder=%GetFolderTemp%
Goto :GetFolder
)
Echo NasPath =%NasPath%
Echo NasFolder=%NasFolder%
Exit /B
何をするにしても、Set NasPath=...
ステートメントのどの部分も引用符で囲まないでください。このように引用符を使用します。
Set FromPath=C:\Program Files\Blah
Set NasPath=C:\Things\Folder
RoboCopy "%FromPath%" "%NasPath%"
このように引用符を使用しないでください。
Set FromPath="C:\Program Files\Blah"
Set NasPath="C:\Things\Folder"
RoboCopy %FromPath% %NasPath%
于 2011-08-30T23:53:31.760 に答える
2
スペースに問題がないように、私はこのコードを提案します:
Set NasPath=C:\Things\My Space\Folder
Set GetFolderTemp=%NasPath%
:GetFolder
FOR /F "tokens=1,* delims=\" %%1 IN ("%GetFolderTemp%") do (
set NasFolder=%%1
set GetFolderTemp=%%2
)
if not "a%GetFolderTemp%"=="a" goto :GetFolder
echo %NasFolder%
于 2012-08-24T13:53:04.913 に答える
0
のようなパス(引用符なし)を想定するとC:\Program Files\Mickey\Mouse
、次のコードを使用することもできます。
setlocal EnableDelayedExpansion
set path=C:\Program Files\Microsoft\Mickey\Mouse
:shift
for /f "tokens=1* delims=\/" %%i in ( "!path!" ) do (
set folder=%%i
set path=%%j
)
if not [!path!] == [] goto :shift
echo folder: !folder!
endlocal
于 2011-09-14T19:45:35.260 に答える