windows - 在 Windows 批处理脚本中获取不带扩展名的文件名

标签 windows command-line batch-file

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

java.exe -jar yuicompressor-2.4.2.jar -o <filename>.min.js <filename>.js

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

更新:
杰里米的回答(+评论)奏效了。对于偶然发现此问题的任何人,这是我必须做的:

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

minify.bat "%1"

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

java.exe -jar yuicompressor-2.4.2.jar -o "%~dpn1.min.js" %1

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

序列%~dpn用于获取:

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

最佳答案

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

RunCompressor.bat "%1"

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

start javaw.exe -jar yuicompressor-2.4.2.jar -o "%~n1.min.js" "%1"

Helpful article

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

关于windows - 在 Windows 批处理脚本中获取不带扩展名的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1472191/

相关文章:

c++ - 向后搜索时 libvlc_media_player_set_position 失败

windows - 如何在意外但正常关机时重新启动tomcat

java - 如何仅使用命令行将环境变量传递给 gradle 包装器构建?

大文件上的 xmlstarlet sel

javascript - 这个 Windows 批处理文件如何运行嵌入式 javascript?

windows - 什么是破损标签?

c# - 在 C# 中导致系统崩溃

php - 尝试使用 Composer 安装 Symfony 应用程序时出现权限问题

Python 脚本在打印前打印 os.system 的输出

windows - Cmd 和感叹号 - 第二部分