【问题标题】:open every file in seperate folders using a batch file使用批处理文件打开单独文件夹中的每个文件
【发布时间】:2018-05-09 13:55:20
【问题描述】:

好的,所以我写了一个小脚本:

    for /R %%f in (*.acd) do C:\Users\jelle\Downloads\quickbms\quickbms.exe D:\assetto_corsa_acd.bms %%f "\data"

但问题是文件 data.acd 将使用 quickbms.exe 提取到我的批处理文件所在的主文件夹中的数据文件夹中,而不是位于 data.acd 所在文件夹中的 /data 文件夹中文件是,所以 x:\carname(folder_with_data.acd_in_it)\data 但我无法让它工作,

所以我的问题是如何让 quickbms 将 acd 文件提取到 acd 文件所在的文件夹而不是批处理文件所在的文件夹? 另请注意,quickbms 在我的路径中

提前致谢。

【问题讨论】:

  • 很好。你具体的编程相关主题问题是什么?请阅读tour 并在此处了解How to Ask!注意 StackOverflow 不是免费的代码/脚本编写服务!
  • 现在编辑了一个问题,也是我的代码示例。我知道这不仅仅是一个获得免费代码编写的地方,但我已经为此苦苦挣扎了几个小时,我不知道如何解决这个问题。
  • 您发布的脚本似乎运行了两行而不是仅一行!
  • 只有一行,但在帖子中没有正确格式化,将其更改为正确的格式。
  • 如果 QuickBMS 在您的%PATH% 中,则无需提供完整路径,您可以使用quickbmsquickbms.exe,随心所欲!

标签: batch-file for-loop


【解决方案1】:

您发布的脚本似乎运行了两行而不是仅一行。

基于以下用法:

quickbms.exe [options] <script.BMS> <input_archive/folder> [output_folder]

我会建议这样的事情:

@Echo Off
Rem Full path to QuickBMS
Set "eBMS=%UserProfile%\Downloads\quickbms\quickbms.exe"
Rem Full path to BMS script
Set "sBMS=D:\assetto_corsa_acd.BMS"
Rem BMS Options
Set "oBMS=-o -d"
Rem The source directory path to recurse (. is current, %~1 is arg[0])
Set "sDIR=."
Rem The sourcefile extension
Set "sEXT=.acd"
Rem The output directory path (.\ relevant to current, %~2 is arg[1])
Set "tOUT=.\data"

For /R "%sDIR%" %%A In (*%sEXT%) Do "%eBMS%" %oBMS% "%sBMS%" "%%A" "%tOUT%"

根据Remarks 填写Set 命令行,并尝试在必要时报告任何问题。

【讨论】:

  • 好的,所以我尝试了脚本,但我一直收到:文件名、目录名或卷标语法不正确。
  • 所以我只是手动将代码输入到 cmd 中,它要求我覆盖文件或创建一个新文件夹,我输入是,但文件根本不会被移动或提取跨度>
  • @JelleVolkerink,您应该使用-o-k-K 选项之一,这些选项应该自动覆盖而不询问,保留现有文件而不覆盖,(跳过all),或者如果已经存在重复文件,则自动重命名文件。脚本中有一个地方可以插入您需要的任何内容,例如Set "oBMS=-o"请注意,我的回答假设您知道如何使用您选择的脚本编写软件,本网站提供脚本帮助而非软件帮助
  • 可选,如果 QuickBMS 在您的 %PATH% 中,则无需提供完整路径,如果您愿意,可以在上面的脚本中使用 Set "eBMS=quickbms.exe"
  • @JelleVolkerink,您需要更好地解释要将文件提取到的位置!为了将来可能的参考,您可能还希望调查-d-D 选项!
猜你喜欢
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2010-09-08
  • 2010-10-16
  • 1970-01-01
相关资源
最近更新 更多