微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

生成某种类型的文件名列表,其哈希值逗号用bat或ps1脚本分隔

如何解决生成某种类型的文件名列表,其哈希值逗号用bat或ps1脚本分隔

我正在尝试使用bat脚本或ps1脚本获取csv中具有哈希值(SHA256)的.zip类型的文件列表。

在蝙蝠脚本中,我已经:

@echo off
set "zipfiles=C:\Location\*.zip"
for %%f in (%zipfiles%) do (
set filename=%%f
set hash=certutil -hashfile "%%f" SHA256
echo %filename%,%hash% >> C:\Location\Report\listofFiles.csv
)

我在csv中的结果是:

SHA256 hash of C:\Location\File 00001.zip:
61b22633916abe04a9024f852f5d873b79635cff75ffc8a36377faa59593369a
CertUtil: -hashfile command completed successfully.
SHA256 hash of C:\Location\File 00002.zip:
e9cdc01a70ce0f2f1fbd8b9e94530fac105609d918858c944d1b8ee3a50764ad
CertUtil: -hashfile command completed successfully.
SHA256 hash of C:\Location\File 00003.zip:
68b17a9d0d98dd64f3c6c5b29e5cd304a6397d21f24e3087723ccad9f6f77c58
CertUtil: -hashfile command completed successfully.

csv中所需的结果是:

File 00001.zip,61b22633916abe04a9024f852f5d873b79635cff75ffc8a36377faa59593369a
File 00002.zip,e9cdc01a70ce0f2f1fbd8b9e94530fac105609d918858c944d1b8ee3a50764ad
File 00003.zip,68b17a9d0d98dd64f3c6c5b29e5cd304a6397d21f24e3087723ccad9f6f77c58 

到目前为止,在ps1脚本中

param(
      [string] $padstaging = 'C:\Location\',[string] $padreport = 'C:\Location\Report',[string] $output = $padreport+'listofFiles.csv'
      )

Get-Childitem -Path $padstaging -Recurse | where {!$_.PSIsContainer} | select-object FullName | export-csv -path $output -Delimiter ',' -notypeinformation;

但是如何将文件添加输出中?

解决方法

您的第一个问题是缺少delayed expansion,第二个问题是您无法像尝试过的那样将命令的输出分配给变量。您需要another for loop。但是您可以通过不使用换行符的小技巧来避免这两个问题:

(for %%f in (%zipfiles%) do (
  <nul set /p =%%f,certutil -hashfile "%%f" SHA256|find /v ":" || echo empty file
))> "C:\Location\Report\ListOfFiles.csv"

如果文件为空(零字节),则certutil无用,并产生错误。在这种情况下,|| echo empty file回显一个字符串(当然,CRLF回显该行)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?