如何在批处理中从完整路径中拆分文件名?

时间:2012-02-12 21:42:47

标签: batch-file

如何在批处理脚本中将文件名拆分为完整路径?

5 个答案:

答案 0 :(得分:67)

@echo off
Set filename=C:\Documents and Settings\All Users\Desktop\Dostips.cmd
For %%A in ("%filename%") do (
    Set Folder=%%~dpA
    Set Name=%%~nxA
)
echo.Folder is: %Folder%
echo.Name is: %Name%

但我不能因此而受到赞扬; Google在http://www.dostips.com/forum/viewtopic.php?f=3&t=409

发现了此消息

答案 1 :(得分:19)

将完全限定路径名(例如c:\ temp \ my.bat)中的文件名解析为任何组件(例如,File.ext)。

单行代码:

new Color(0.0, 0.0, 0.0)

您可以更改" C:\ Folder1 \ Folder2 \ File.ext "任何完整的路径和变化" %% ~fA "对于任何其他选项,您可以通过运行" for /?"在命令提示符下。

详细说明的代码

For %%A in ("C:\Folder1\Folder2\File.ext") do (echo %%~fA)

独立批处理脚本
另存为 C:\ cmd \ ParseFn.cmd

C:\ cmd 添加到 PATH 环境变量中,并使用它来存储所有可重用的批处理脚本。

set "filename=C:\Folder1\Folder2\File.ext"
For %%A in ("%filename%") do (
    echo full path: %%~fA
    echo directory: %%~dA
    echo path: %%~pA
    echo file name only: %%~nA
    echo extension only: %%~xA
    echo expanded path with short names: %%~sA
    echo attributes: %%~aA
    echo date and time: %%~tA
    echo size: %%~zA
    echo drive + path: %%~dpA
    echo name.ext: %%~nxA
    echo full path + short name: %%~fsA)

答案 2 :(得分:6)

@echo off
Set filename="C:\Documents and Settings\All Users\Desktop\Dostips.cmd"
call :expand %filename%
:expand
set filename=%~nx1
echo The name of the file is %filename%
set folder=%~dp1
echo It's path is %folder%

答案 3 :(得分:0)

我对批处理文件的了解不多,但你不能将预先制作的批处理文件从主目录复制到你所拥有的路径,它会返回文件名列表然后使用该名称?

这是一个我认为可能有助于制作预制批处理文件的链接。

http://www.ericphelps.com/batch/lists/filelist.htm

答案 4 :(得分:0)

继续上面的Pete示例,要直接在cmd窗口中执行此操作,请使用单个%,例如:

cd c:\test\folder A
for %X in (*)do echo %~nxX

(请注意,desktop.ini等特殊文件不会显示。)

还可以使用>>将输出重定向到文件:

cd c:\test\folder A
for %X in (*)do echo %~nxX>>c:\test\output.txt

举个实例,假设您要将所有文件从文件夹A复制到文件夹-B(非递归):

cd c:\test\folder A
for %X in (*)do robocopy . "c:\test\folder B" "%~nxX" /dcopy:dat /copyall /v>>c:\test\output.txt

以及所有文件夹(递归):

cd c:\test\folder A
for /d %X in (*)do robocopy "%X" "C:\test\folder B\%X" /e /copyall /dcopy:dat /v>>c:\test\output2.txt