【问题标题】:In a batch file, how do I get a file name from a file path?在批处理文件中,如何从文件路径中获取文件名?
【发布时间】:2012-06-19 15:35:06
【问题描述】:

我有一个需要用户输入文件路径的批处理文件。稍后在文件中,我只想从路径中隔离文件名和扩展名,即最后一个“\”之后的任何内容。

set FILEPATH=\\srv-01\My Docs\Templates\My SpreadSheet.xls
...
set FILENAME=???

我需要将 FILENAME 设置为什么才能使其等于“My SpreadSheet.xls”?

希望这很容易做到。谢谢!

【问题讨论】:

  • stackoverflow.com/questions/3432851/…你需要for /F %i in ("c:\foo\bar.txt") do @echo %~nxi
  • @HaraldBrinkhof:这个问题是关于 DOS(真正的 DOS)的,你的小代码 sn-p 对带有空格的路径失败......
  • @user1055650: 标签 dos+windows 暗示 Win9x 但我假设你实际上是指 WinNT+

标签: windows batch-file dos


【解决方案1】:
@echo off
set FILEPATH=\\srv-01\My Docs\Templates\My SpreadSheet.xls
for /F "delims=" %%A in ("%FILEPATH%") do set "FILEPATH=%%~nxA"
echo.%FILEPATH%

【讨论】:

  • 这很慢,因为 cmd.exe 实际上是在 "\\srv-01\My Docs" 上查找文件,尽管它实际上并不需要(或者我不确定它为什么会这样做)。我敢打赌,您实际上并没有这样的服务器或文件(如果存在位置会更快)。
  • 哦,这就解释了。谢谢你的帮助,迈克尔。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多