标题: [文本处理] 如何用certutil -hashfile生成的文档,不显示文件的全路径。 [打印本页]
作者: 2287089723 时间: 2023-4-27 14:39 标题: 如何用certutil -hashfile生成的文档,不显示文件的全路径。
本帖最后由 2287089723 于 2023-4-27 14:58 编辑
我在文件夹“待检测文档”里放了一个批处理程序,用来生成文件夹“待检测文档”及其子目录里所有文件的SHA256值,并将所有SHA256生成文件hash_data。
“待检测文档”目录结构如下- 卷 Windows 的文件夹 PATH 列表
- 卷序列号为 XYZ9-ABC1
- C:.
- │ 01Metadata.bat
- │ 02Appraisal.bat
- │
- ├─metadata
- │ meta_data
- │
- └─测试用资料
- 《002》.pdf
- 《003A》.pdf
- 《003B》.pdf
- 202001ZXDS13.jpg
- 202001ZXDS14.jpg
复制代码
代码- @echo off
-
- setlocal enabledelayedexpansion
-
- if not exist metadata md metadata
-
- %~d0
- cd %~dp0
-
- if exist metadata\hash_data del metadata\hash_data
- for /R %%s in (*) do (
- (certutil -hashfile "%%s" SHA256) >> metadata\hash_data
- )
复制代码
由于文件夹“待检测文档”在目录C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\中。
所有得到的hash_data文件内容如下。
hash_data文件内容- SHA256 的 C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\待检测文档\01Metadata.bat 哈希:
- a16e1970a7418a38ce6de7d3af1246b1e388dd61c1ba0dd9aab5efa6fe4025b9
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\待检测文档\02Appraisal.bat 哈希:
- 4a06ed85d2e12f9804aaef3aa22418ecfd1a38daada6756f30136d8a48f7933a
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\待检测文档\metadata\meta_data 哈希:
- f864689c994b1e4f711295cf9d8d29f5a850dd0e62f94893b402f7f37974c28d
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\待检测文档\测试用资料\《002》.pdf 哈希:
- 6847b6ee3edf429c704bcc50c808248af15b8752ca32acb468dfb692a820f4fc
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\待检测文档\测试用资料\《003A》.pdf 哈希:
- 05d556634055c3439f50b66b9ef2298a627416d9993abbea49499ec03282caf6
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\待检测文档\测试用资料\《003B》.pdf 哈希:
- ef406eb8790d4447cccffed206f65233d1cc1aae1d369ebfc8f232ead57dee72
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\待检测文档\测试用资料\202001ZXDS13.jpg 哈希:
- 3843ed7c332da96c19cec954c0f555c1f21fcea72a1fd00b3200fb2ae4a00b89
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\待检测文档\测试用资料\202001ZXDS14.jpg 哈希:
- 55e2e66251971f3e8a22eb20ba3cabe2ad65f7a94400f341f0e161f9e48e7ec8
- CertUtil: -hashfile 命令成功完成。
- ...
复制代码
可以看到文件的路径是全路径:- C:\Users\XYZ\Documents\Workspace\batch\data\0199\tool\待检测文档\测试用资料\202001ZXDS13.jpg
复制代码
这太长了,我希望hash_data中记录,以“待检测文档”为根目录的路径,如下:复制代码
希望的hash_data内容如下:- SHA256 的 01Metadata.bat 哈希:
- a16e1970a7418a38ce6de7d3af1246b1e388dd61c1ba0dd9aab5efa6fe4025b9
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 02Appraisal.bat 哈希:
- 4a06ed85d2e12f9804aaef3aa22418ecfd1a38daada6756f30136d8a48f7933a
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 metadata\meta_data 哈希:
- f864689c994b1e4f711295cf9d8d29f5a850dd0e62f94893b402f7f37974c28d
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 测试用资料\《002》.pdf 哈希:
- 6847b6ee3edf429c704bcc50c808248af15b8752ca32acb468dfb692a820f4fc
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 测试用资料\《003A》.pdf 哈希:
- 05d556634055c3439f50b66b9ef2298a627416d9993abbea49499ec03282caf6
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 测试用资料\《003B》.pdf 哈希:
- ef406eb8790d4447cccffed206f65233d1cc1aae1d369ebfc8f232ead57dee72
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 测试用资料\202001ZXDS13.jpg 哈希:
- 3843ed7c332da96c19cec954c0f555c1f21fcea72a1fd00b3200fb2ae4a00b89
- CertUtil: -hashfile 命令成功完成。
- SHA256 的 测试用资料\202001ZXDS14.jpg 哈希:
- 55e2e66251971f3e8a22eb20ba3cabe2ad65f7a94400f341f0e161f9e48e7ec8
- CertUtil: -hashfile 命令成功完成。
- ...
复制代码
请问在不安装其他软件的情况下,用什么代码可以实现这个要求。
作者: buyiyang 时间: 2023-4-27 14:56
- setlocal enabledelayedexpansion
- for /R %%s in (*) do (
- set "f=%%s"
- set "f=!f:%~dp0=!"
- (certutil -hashfile "!f!" SHA256) >> metadata\hash_data
- )
复制代码
作者: 2287089723 时间: 2023-4-27 15:09
buyiyang 发表于 2023-4-27 14:56
谢谢。问题完美解决。- set "f=%%s"
- set "f=!f:%~dp0=!"
复制代码
刚学批处理,知道“%~dp0”是驱动器号和路径。但不理解,为什么加上“f:”后,就能去掉批处理所在目录之前的路径。
这块还望点拨一二。
作者: buyiyang 时间: 2023-4-27 15:24
回复 3# 2287089723
set的变量替换,!f:%~dp0=!将f变量的值中的脚本路径%~dp0替换为空
作者: 2287089723 时间: 2023-4-27 15:30
回复 4# buyiyang
明白了。谢谢。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |