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

11 浏览
0 Comments

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

如何在批处理脚本中将完整路径中的文件名提取出来?

0
0 Comments

如何从完整路径中拆分文件名?该问题的出现原因是在运行代码时,输出的行重复了两次。解决方法是在代码中添加一个if语句来检查路径是否存在,以避免重复输出。这是一个简洁的解决方案,谢谢。

以下是整理后的文章:

当我运行这段代码时,输出的行重复了两次。我不确定如何解决这个问题。以下是输出结果:

文件名是Dostips.cmd,路径是C:\Documents and Settings\All Users\Desktop\。当路径不存在时,重复输出两次。有没有办法在不使用if语句的情况下解决这个问题?但是这是一个很简洁的解决方案,谢谢。

不,这也不是问题的原因。如果我在代码的底部添加echo another line,它的行为也是一样的。

0
0 Comments

问题的出现原因是用户想要在批处理中将文件名从完整路径中分割出来。解决方法是使用批处理中的特殊变量和参数来实现。

以下是解决方法的步骤:

1. 设置变量filename为完整路径:"C:\Documents and Settings\All Users\Desktop\Dostips.cmd"。

2. 使用for循环将filename分割成文件夹路径和文件名,并分别赋值给变量Folder和Name。

3. 使用echo命令输出Folder和Name的值,以验证分割结果。

以上代码和解决方法来源于一个名为"dostips.com"的论坛,感谢Google的帮助。

此外,用户还提到了另一种获取文件名(不包括扩展名)的方法:%~nI,其中n表示只包括文件名,I是一个变量。

希望本文对于需要在批处理中分割文件名的用户有所帮助。

0
0 Comments

批处理中分割文件名和完整路径的问题是一个常见的需求。比如,我们想要从一个完整的路径名(如c:\temp\my.bat)中提取文件名的某个组成部分(如File.ext)。

要解决这个问题,我们可以使用一行代码来实现。具体的代码如下:

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

上述代码中,我们可以将"C:\Folder1\Folder2\File.ext"替换为任何完整路径,并且将"%%~fA"替换为其他选项,通过在命令提示符下运行"for /?"命令可以找到更多选项。

如果我们需要更详细的代码,可以使用如下代码:

set "filename=C:\Folder1\Folder2\File.ext"
For %%A in ("%filename%") do (
    echo full path: %%~fA
    echo drive: %%~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
)

上述代码中,我们首先定义了一个变量filename,然后通过使用for循环和变量来分割文件名。在循环中,我们可以根据需要选择输出的组成部分,如完整路径、驱动器、路径、文件名、扩展名等。

如果我们需要将这段代码保存为独立的批处理脚本,可以按照以下步骤进行操作:

1. 将代码保存为"C:\cmd\ParseFn.cmd"。

2. 将"C:\cmd"路径添加到系统的PATH环境变量中,以便可以在任何位置使用该脚本。

3. 运行该脚本时,需要提供两个输入参数,第一个参数是文件名,第二个参数是需要提取的组成部分。

以上就是如何在批处理中分割文件名和完整路径的解决方法。通过使用一行简洁的代码或者更详细的代码块,可以方便地实现这个功能。同时,我们还可以将这段代码保存为独立的批处理脚本,以便在需要的时候使用。

0