在Windows批处理脚本中获取没有扩展名的文件名

Dan*_*ert 54 windows command-line batch-file

我正在尝试创建一个右键单击上下文菜单命令,用于使用YUI压缩器压缩JavaScript文件.我的最终目标是尝试让它在上下文菜单上运行:

java.exe -jar yuicompressor-2.4.2.jar -o <filename>.min.js <filename>.js
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用该变量%1来引用正在打开的文件名.我无法弄清楚如何将此命令转换为批处理文件语法,并且无法在线找到任何答案.

更新:
Jeremy的回答(+评论)奏效了.对于任何偶然发现这一点的人来说,这就是我必须做的事情:

在我为JavaScript文件创建的操作中,我使用它作为命令:

minify.bat "%1"
Run Code Online (Sandbox Code Playgroud)

哪个调用我的批处理脚本,如下所示:

java.exe -jar yuicompressor-2.4.2.jar -o "%~dpn1.min.js" %1
Run Code Online (Sandbox Code Playgroud)

对于批处理脚本,请记住上面的代码假定java.exe和yuicompressor的目录都添加到您的PATH变量中.如果不将这些添加到路径中,则必须使用文件的完整路径.

该序列%~dpn用于获取:

  1. %~d - 驱动器
  2. %~p - 路径
  3. %~n - 文件名

Jer*_*ein 47

更改操作以调用批处理文件:

RunCompressor.bat "%1"
Run Code Online (Sandbox Code Playgroud)

用于%~n1在RunCompressor.bat中获取不带扩展名的文件名:

start javaw.exe -jar yuicompressor-2.4.2.jar -o "%~n1.min.js" "%1"
Run Code Online (Sandbox Code Playgroud)

有用的文章

启动javaw.exe在运行批处理文件时关闭命令窗口.


lyg*_*ate 7

echo path of this file name is: %~dp0
echo file name of this file without extension is:%~n0
echo file extention of this file is:%~x0
echo The file name of this file is: %~nx0
Run Code Online (Sandbox Code Playgroud)