我怎样才能在Windowsbatch file中做到这一点? 不幸的是使用powerscript不是一个选项。
这里input文件(file.txt)
MD5hashoffile20160613190010_Address f4f855c5cb40767a7227b506f641ceef CertUtil:-hashfilecommandcompletedsuccessfully.
我想使用findstr实用程序,但我使用的正则expression式必须是错误的,因为它没有返回任何东西。
使用util-linux重命名命令
这个版本没有指定目标
Vim:从vim命令运行java会产生错误
我怎样才能模仿与MS-DOS命令curl?
findstr /R "[a-fA-F0-9]{32}" file.txt
我感谢任何build议。
谢谢
更新:
从命令行更改Windows主机名
在terminal中运行文本文件
在terminal使用curl“if”语句?
如何在Windows中从命令行为* .accdb创build用户DSN?
findstr /R "^[a-fA-F0-9]*$" file.txt
用完整的解决方案更新答案
SETLOCAL ENABLEDELAYEDEXPANSION SET "FILESIZE=0" SET "RECORDCOUNT=0" SET "MD5HASH=" SET "TEMPHASH=" SET "FILESETREPORT=_UNSET" SET "LINE=0" SET "COLUMNS=TableName|RecordCount|FileSize|filehash" echo "=============================" echo "= Starting FileSize process =" echo "=============================" for %%F in (*.csv) do ( echo "Process A CSV File" for /f "tokens=1,2,3,4 delims=^_" %%A IN ("%%~nF") do ( SET "TABLENAME=%%D" SET "FILESIZE=%%~zF" if "!FILESETREPORT!" == "_UNSET" ( SET "FILESETREPORT=%%A_%%B_%%C_FilesetReport.csv" :: Initialize the headers echo !COLUMNS! > !FILESETREPORT! ) ) echo "Get RecordCount in CSV" if "!TABLENAME!" NEQ "FilesetReport" ( for /f "tokens=*" %%I in ('more +1 %%F ^| find /v /c ""') do SET "RECORDCOUNT=%%I" echo "Generate File MD5 Hash" certUtil -hashfile %%~nxF MD5 > hashfile echo "Get the hash from the file" for /f "skip=1 tokens=*" %%A in (hashfile) do ( SET "TEMPHASH=%%A" :: call :cleanHash if !LINE! == 0 SET "LINE=1" && call :cleanHash ) :: Reset the Line Number SET "LINE=0" echo "Save File Details to FieldsetReport" echo "RecordCount : !RECORDCOUNT!" echo "FileSize : !FILESIZE!" echo "MD5Hash : !MD5HASH!" echo "TableName : !TABLENAME!" SET "OUTPUTLINE=!TABLENAME!|!RECORDCOUNT!|!FILESIZE!|!MD5HASH!" echo !OUTPUTLINE! >> !FILESETREPORT! :: Cleanup del hashfile ) ) echo "File Processing Completed" exit /b 0 :cleanHash echo "Remove all spaces from the MD5 hash" :: for /f "delims=" %%a in ('findstr /R "^[a-fA-F0-9]*$" !TEMPHASH!') do SET TEMPHASH=%%a SET "MD5HASH=!TEMPHASH: =!" echo "********************************************************************" echo !MD5HASH! ENDLOCAL
你最好使用这个:
@echo off for /f "skip=1" %%a in (file.txt) do set "hash=%%a" &goto breakLoop :breakLoop echo %hash% pause
这应该工作,即使另一行也只包含十六进制字符,并具有将md5哈希放在一个变量,可以使用的额外好处。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。