批处理:只读取带有路径和文件名的变量的文件名

Mic*_*ael 8 filenames dos batch-file

我目前正在寻找一种批处理变量的方法,只解析文件名.

例如,我从另一个应用程序传递我的批处理文件a -s参数,该应用程序随后设置为我的源变量.源文件变量通常包含以下内容:C:\ Program Files\myapp\Instance.1\Data\filetomove.ext.

我想从变量,直到第一个"\"结束读取和结果设置为一个新的变量名,但我一直没能成功使用"FOR/F"条命令.

任何帮助将非常感激!

更新:只有标准的XP或Windows 2000/2003可用...(不能假设安装了资源工具包).

Dav*_*Ray 9

如果它作为脚本的参数,即%1,%2等,你可以只将文件名和扩展名提取到一个变量中,如下所示:

set FILENAME=%~nxN
Run Code Online (Sandbox Code Playgroud)

其中N是参数的索引.例如,此脚本将仅回显第一个参数的文件名:

@echo off
set FILENAME=%~nx1
echo %FILENAME%
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,如果名称中包含"&"字符,则此指令似乎已损坏.我刚刚遇到了一个名为"NGC&Wii"的目录.显然,可以更改名称,但在某些情况下,您可能无法更改名称. (2认同)