【问题标题】:Open file by extension only with batch file仅使用批处理文件按扩展名打开文件
【发布时间】:2014-08-13 04:58:46
【问题描述】:

我一直在为我的批处理文件寻找正确的代码来启动程序并仅按扩展名打开文件。我一直在搜索,我能找到的只是按文件名打开文件,没有扩展名。我想反过来做。试了很多次

start "C:\program files\folder\program name.exe" d:\folder\filename.extension

我为其他程序找到了一些答案并尝试了它们,但它们不起作用。我尝试用 * 替换文件名,但效果不佳。

我问的原因是因为文件名会更改每个内部版本号,但扩展名在该文件夹中是唯一的。 希望你能帮助我。 谢谢

【问题讨论】:

    标签: batch-file filenames file-extension


    【解决方案1】:

    你应该可以做到:

    start "" filename.extension
    

    由于一些奇怪的、不合逻辑的、微软式的原因,双双引号提供了窗口的名称。

    【讨论】:

    • by "weird, illogical, Microsoft-y" 我认为您忘记了 start 命令的目的。最初是用来在dos中创建一个新线程的。因此,从逻辑上讲如果您正在创建一个新线程:您可能希望先命名它,然后再分配它的任务。 万事皆有因 :D
    • 感谢您的回复。我认为这不符合我的要求。这仍然需要知道文件名。我只想通过文件扩展名打开它。文件名包含内部版本号,因此每个版本都会有所不同。
    【解决方案2】:

    你可以这样做

    rem ** go to the folder 
    CD d:\folder
    
    rem ** find all the filenames with required extension using a for-loop
    
    FOR /F "tokens=1 delims=" %%A in ('DIR /b *.extension') do (
        rem ** Added some delay before start as per OP comments
        timeout 5
        rem ** use start command
        start "C:\program files\folder\program name.exe" %%A
    )
    

    编辑:添加了Timeout,以便在开始前根据OP's comment进行一些延迟

    【讨论】:

    • 感谢您的回复。我不知道为什么,但它不起作用。它显示 CMD 屏幕,但在我可以阅读任何内容之前它再次关闭。什么都没有发生。
    • 我发现了它为什么不起作用。我试图调试它并在每一行之后加上“暂停”。它工作得很好。显然它需要在进入文件夹和启动应用程序之间稍作停顿。
    • 是的,我做到了。我添加了 1 秒的暂停,现在它工作正常!谢谢。
    • 这怎么可能?正如@MarkSetchell 提到的,start 需要额外的"" 才能工作。
    • @ThomasW。请阅读about the rabbit ears,强调除非它是唯一的参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2011-09-18
    • 1970-01-01
    • 2018-08-02
    相关资源
    最近更新 更多