【问题标题】:Batch Loop Through All Files And Subfolders批量循环遍历所有文件和子文件夹
【发布时间】:2015-11-10 02:21:22
【问题描述】:

所以我正在处理多个批处理程序,我需要知道如何遍历所有文件,包括子文件夹中的文件。但是,我无法这样做。其中一个需要这样做的程序是使用命令“certutil -encode”,该命令对该文件夹和子文件夹中的所有文件进行编码,并使用命令“certutil -decode”进行解码,这是我目前得到的代码(这段代码是循环):

set file=C:\Extras\Encode\*.txt
certutil -encode C:\Extras\Encode\*.txt C:\Extras\Encoded\*.b64

但这不起作用,因为它只循环通过 C:\Extras\Encode 但不测试子文件夹中的那些,如 C:\Extras\Encode\Subfolder\ 那我该怎么办?

编辑:我知道输出为 C:\Extras\Encoded*.hex 的第二部分是错误的。

【问题讨论】:

  • 看看for /R递归循环遍历一个目录树; for /R /D 一样死,但枚举所有目录而不是文件;在命令提示符中键入for /? 以获取详细信息...

标签: batch-file for-loop encode subdirectory


【解决方案1】:

一般来说,

for /f "delims=" %%a in ('dir /s /b "C:\extras\encode\*.txt"') do echo %%a

应该提供 %%a 与子树中的掩码匹配的每个文件名。您可以随意使用修改后的引用 %%~da %%~pa %%~na %%~xa %%~dpnxa 作为驱动器、路径、名称、扩展名或全部组合。

细节会因应用而异。

【讨论】:

  • 这很好,除非我这样做,它将 %%a 设置为多个文件,并且无法使用“certutil -encode”,因为这些参数太多,无法一次处理,如何我绕过这个?我应该将此作为另一个问题发布吗?
  • 我不是certutil 的专家——我从未使用过它。也许代替echo %%a,您可以尝试certutil -encode C:\Extras\Encode\%%~na.txt C:\Extras\Encoded\%%~na.b64,它应该在每个文件上连续运行不同的certutil 实例。似乎没有向certutil 提供文件列表的选项。首先在一个小子集上运行,看看它是如何进行的。 %%~na 表示%%a 的名称部分。您可能想要%%~nxa,这意味着%%a 的名称+扩展名。
猜你喜欢
  • 1970-01-01
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-16
  • 2014-04-24
  • 1970-01-01
相关资源
最近更新 更多