如何從一個變量中提取路徑和文件名?從變量中批量提取路徑和文件名
Setlocal EnableDelayedExpansion
set file=C:\Users\l72rugschiri\Desktop\fs.cfg
我想這樣做,而不使用任何功能或任何GOTO。 有可能嗎?
如何從一個變量中提取路徑和文件名?從變量中批量提取路徑和文件名
Setlocal EnableDelayedExpansion
set file=C:\Users\l72rugschiri\Desktop\fs.cfg
我想這樣做,而不使用任何功能或任何GOTO。 有可能嗎?
@ECHO OFF
SETLOCAL
set file=C:\Users\l72rugschiri\Desktop\fs.cfg
FOR %%i IN ("%file%") DO (
ECHO filedrive=%%~di
ECHO filepath=%%~pi
ECHO filename=%%~ni
ECHO fileextension=%%~xi
)
不真的知道你所說的沒有「功能」
顯然意味着什麼,改變ECHO
到SET
設置變量,而馬拉松附和他們...
全額見http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx名單。
只能從(1)BAT本身的參數%1
或(2)CALL %1
的參數或(3)本地FOR變量%%a
中提取路徑和文件名。
HELP CALL
或HELP FOR
您可能會發現更詳細的信息:
%〜1 - 擴展%1刪除任何引號(「)
%〜F1 - %1擴展到一個完全合格路徑名
%〜D1 - %1擴展到一個驅動器號
%〜P1 - %1擴展到路徑只有
%〜N1 - %1擴展到一個文件名
%〜X1 - %1擴展到一個文件擴展名
%〜S1 - 擴充的路徑只含有短名
%〜a1 - 將%1擴展到文件屬性
%〜T1 - %1擴展到文件
%的日期/時間〜Z1 - %1擴展到文件的大小
然後嘗試以下方法:
要麼把這個字符串被解析爲一個參數傳遞給CALL
call :setfile ..\Desktop\fs.cfg
echo %file% = %filepath% + %filename%
goto :eof
:setfile
set file=%~f1
set filepath=%~dp1
set filename=%~nx1
goto :eof
或同等,傳遞文件名作爲本地FOR變量
for %%a in (..\Desktop\fs.cfg) do (
set file=%%~fa
set filepath=%%~dpa
set filename=%%~nxa
)
echo %file% = %filepath% + %filename%
,如果你想從實際運行的批處理文件的相關信息, 試試這個:
@echo off
set myNameFull=%0
echo myNameFull %myNameFull%
set myNameShort=%~n0
echo myNameShort %myNameShort%
set myNameLong=%~nx0
echo myNameLong %myNameLong%
set myPath=%~dp0
echo myPath %myPath%
set myLogfileWpath=%myPath%%myNameShort%.log
echo myLogfileWpath %myLogfileWpath%
更多的樣本? C:> HELP CALL
%0 = parameter 0 = batchfile %1 = parameter 1 - 1st par。傳遞給批處理文件...所以你可以嘗試在第一個(例如「%」)和最後一個(例如「%」)之間的東西(例如「〜dp」)。「1」)也爲參數
所有這一切都爲我的作品:
@Echo Off
Echo Directory = %~dp0
Echo Object Name With Quotations=%0
Echo Object Name Without Quotes=%~0
Echo Bat File Drive = %~d0
Echo Full File Name = %~n0%~x0
Echo File Name Without Extension = %~n0
Echo File Extension = %~x0
Pause>Nul
輸出:
Directory = D:\Users\Thejordster135\Desktop\Code\BAT\
Object Name With Quotations="D:\Users\Thejordster135\Desktop\Code\BAT\Path_V2.bat"
Object Name Without Quotes=D:\Users\Thejordster135\Desktop\Code\BAT\Path_V2.bat
Bat File Drive = D:
Full File Name = Path.bat
File Name Without Extension = Path
File Extension = .bat
的可能的複製[如何分割在批次完整路徑的文件名?] (http://stackoverflow.com/questions/9252980/how-to-split-the-filename-from-a-full-path-in-batch) – iTayb 2015-11-15 18:52:02