【问题标题】:How to obtain the filename in windows?如何在windows中获取文件名?
【发布时间】:2017-03-05 11:52:06
【问题描述】:

ImageMagick 程序有一个convert 命令可以用来转换图片格式。比如我有一张图片test.jpg

convert test.jpg test.png

会给test.png。

我想将此命令添加到右键菜单中以简化我的工作。我在HKEY_CLASSES_ROOT -- * -- shellregedit 中添加了一个项目

C:\Program Files\ImageMagick-7.0.3-Q16\convert.exe -density 600 "%1" %1.png

当我运行这个命令来归档test.jpg 时,它会给出test.jpg.png。我想获取文件test.png。我应该如何修改命令行?

【问题讨论】:

  • 将最终的%1.png 更改为"%~dpn1.png",或者可能是"%~n1.png",具体取决于您的输入变量。
  • 你可以在你的 sendto 文件夹中放一个批处理文件。

标签: windows batch-file


【解决方案1】:

我不确定 shell 处理程序是否直接支持此功能,但我会使用具有所需功能的 cmd 来解决它:

cmd /d /c "for /f "delims=" %%i in ('@echo %1') do @start "" "C:\Program Files\ImageMagick-7.0.3-Q16\convert.exe" -density 600 "%1" "%%~dpni.png""
  • @echo %1 回显 shell 提供的完整路径,使其可用于 CMD 作为可处理的结果。该表达式用单引号括起来,因为这就是使它成为命令的原因。
  • for /f 将结果解析为字符串列表(包含一个字符串),将每个(一个)字符串放入 %i 并允许 %~dpnitakes drive letter, path and name(但不是扩展名)从 %i 中取出。
  • @start 用于不让 CMD 等待程序完成。 start 之后的空引号是 very required

【讨论】:

    【解决方案2】:

    你的方法很好。虽然您需要稍微更改语法:

    C:\Program Files\ImageMagick-7.0.3-Q16\convert.exe -density 600 "%1" %1.png
    

    C:\Program Files\ImageMagick-7.0.3-Q16\convert.exe -density 600 "%1" "%~n1.png"
    

    我希望这能解决您的问题。但是,如果不是 - 您可以制作一个包含此命令的批处理文件(第二个,由我修改)并将其保存在 PC 的某个位置(例如 "C:\MyScript.Bat") p>

    并且,尝试将注册表中的键设置为:

    C:\MyScript.bat "%1"
    

    而且,这是一种灵活的方式。 注意:批量代码如下:

    "C:\Program Files\ImageMagick-7.0.3-Q16\convert.exe" -density 600 "%1" "%~n1.png"
    

    您想在右键上下文菜单中进行任何更改,您可以通过更改批处理文件来应用。

    希望我能帮上忙!

    【讨论】:

    • 感谢您的回答。第一种方法行不通,给%~n1.png。我尝试了第二种方法,但它不起作用。也许我做错了一些操作。可以试试吗?
    • 已经有一个deleted answer 建议使用%~n1.png。这没用。批处理文件应该可以工作。
    猜你喜欢
    • 2014-06-29
    • 1970-01-01
    • 2010-09-26
    • 2013-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    相关资源
    最近更新 更多