【问题标题】:Get filename from string-path?从字符串路径获取文件名?
【发布时间】:2012-05-01 03:37:30
【问题描述】:

如何从这个字符串中获取文件名?

"C:\Documents and Settings\Usuario\Escritorio\hello\test.txt"

输出:

"test.txt"

在发帖之前我真的很想找到这个,但是所有结果都被污染了,他们谈论从当前目录获取文件名(我必须只使用字符串)

【问题讨论】:

  • cd 到该目录并输入 dir /b
  • @Marc 该字符串是通过循环创建的,我认为访问 200-300 目录是不明智的。我真的必须只使用字符串,但感谢您的替代

标签: string batch-file filenames


【解决方案1】:

如果您的路径作为参数出现,只需使用:

%~nx1(1 代表第一个参数,我们假设它是第一个)

echo %~nx1 会直接返回 test.txt

【讨论】:

  • 我自己非常需要这个,对于那个特殊情况(作为参数),它更短更优雅。
【解决方案2】:

假设您需要“c:\temp”目录树下的文件名(包括子目录):

FOR /R c:\temp %i in (*.*) do echo %~nxi

【讨论】:

    【解决方案3】:

    方法一

    for %%F in ("C:\Documents and Settings\Usuario\Escritorio\hello\test.txt") do echo %%~nxF
    

    输入HELP FOR了解更多信息。

    方法二

    call :sub "C:\Documents and Settings\Usuario\Escritorio\hello\test.txt"
    exit /b
    
    :sub
    echo %~nx1
    exit /b
    

    输入HELP CALL了解更多信息。

    【讨论】:

    • 拜托,你能解释一下“%~nx1”吗?
    • @Yukulélé - 它修改了%1 的扩展,将其视为文件路径并扩展为名称和扩展名,忽略驱动器和路径。在命令提示符下键入 HELP CALLCALL /? 以获取有关所有参数扩展修饰符的更多信息。
    • 谢谢,我在这里找到了更多细节microsoft.com/resources/documentation/windows/xp/all/proddocs/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 2012-06-24
    • 2011-11-16
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多