标题: [文件操作] [已解决]如何用bat获取信息,在文件名后面添加? [打印本页]
作者: czvde 时间: 2022-3-17 20:46 标题: [已解决]如何用bat获取信息,在文件名后面添加?
本帖最后由 czvde 于 2022-3-24 20:04 编辑
123.txt
bat效果:
123_【文件的CRC32值】.txt
已解决!!
作者: 523066680 时间: 2022-3-17 21:23
本帖最后由 523066680 于 2022-3-17 21:24 编辑
这个用批处理做可能代码并不复杂,不过我很久没写过批处理了。
以下Perl代码,写的有点繁杂了。- use Modern::Perl;
- use Crypt::Checksum ':all';
- for my $f ( grep { -f } glob "*" )
- {
- my $crc = crc32_file_hex( $f );
- unless ( $f =~/$crc/ )
- {
- my $newname = $f;
- $newname =~s/(\.\w+)$/_$crc$1/;
- rename $f, $newname;
- }
- }
复制代码
话说,Strawberry perl 自带一个 crc32.bat 可以命令行调用
作者: czvde 时间: 2022-3-17 21:40
本帖最后由 czvde 于 2022-3-18 13:47 编辑
回复 2# 523066680
已解决
作者: 523066680 时间: 2022-3-17 22:34
本帖最后由 523066680 于 2022-3-17 22:35 编辑
这个需要安装Perl,保存为.pl格式运行
https://strawberryperl.com/
应该等下也有其他答主给出更直接的方案。
作者: czvde 时间: 2022-3-17 23:20
本帖最后由 czvde 于 2022-3-18 13:48 编辑
回复 4# 523066680
很好用,谢谢
作者: 523066680 时间: 2022-3-18 08:53
- use Modern::Perl;
- use Crypt::Checksum ':all';
-
- for my $f ( grep { -f } glob "*" )
- {
- # mp4 和 txt 以外的格式跳过
- next unless $f =~/\.(mp4|txt)$/i;
-
- # 获取校验码
- my $crc = crc32_file_hex( $f );
-
- # 除非文件名中包含校验值,否则执行替换(避免重复追加)
- unless ( $f =~/$crc/ )
- {
- my $newname = $f;
- $newname =~s/(\.\w+)$/_$crc$1/;
- rename $f, $newname;
- }
- }
复制代码
作者: czvde 时间: 2022-3-18 11:14
本帖最后由 czvde 于 2022-3-18 13:51 编辑
回复 6# 523066680
实现效果:
123_【f87918ea】.txt
作者: 523066680 时间: 2022-3-18 12:06
回复 7# czvde
你用系统默认的记事本编辑器,编辑另存为,看看下方显示的编码是不是 UTF8, 如果是,可以用以下代码
(现在Win10系统记事本好像默认是UTF8)- use utf8;
- use Encode;
- use Modern::Perl;
- use Crypt::Checksum ':all';
-
- for my $f ( grep { -f } glob "*" )
- {
- # mp4 和 txt 以外的格式跳过
- next unless $f =~/\.(mp4|txt)$/i;
-
- # 获取校验码
- my $crc = crc32_file_hex( $f );
-
- # 除非文件名中包含校验值,否则执行替换(避免重复追加)
- unless ( $f =~/$crc/ )
- {
- my $newname = $f;
- $newname =~s/(\.\w+)$/encode('gbk', "_【$crc】").$1/e;
- rename $f, $newname;
- }
- }
复制代码
作者: went 时间: 2022-3-18 12:32
test.bat
ansi编码,需要下载coder.exe- @echo off & cd /d "%~dp0"
- for %%i in (*) do (
- if not "%~0" == "%%~fi" (
- for /f "tokens=1* delims=: " %%a in ('coder -s -a gh -f "%%i" ^| findstr /b /C:"CRC32"') do (
- echo %%~ni_【%%b】%%~xi
- rename "%%~i" "%%~ni_【%%b】%%~xi"
- )
- )
- )
- pause&exit
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |