从变量中批量提取路径和文件名
如何从一个变量中提取路径和文件名?从变量中批量提取路径和文件名
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