标题: 【已解决】【30元红包】-生成UUID [打印本页]
作者: linfeng_321 时间: 2022-3-23 13:11 标题: 【已解决】【30元红包】-生成UUID
本帖最后由 linfeng_321 于 2022-3-23 14:32 编辑
写两个bat文件
-------------------------
脚本里路径变量:
$txtfile=".\文档\文件.txt";
$uuidfile=".\随机UUID\uuid.txt";
-------------------------
pwsh脚本:[System.Guid]::NewGuid().ToString("N").toUpper()
结果格式:8A320F5EBB8944A1A2447D1448B7DABE
-------------------------
1.bat
查找".\随机UUID\uuid.txt"是否有值:
有值时,直接复制到“文件\文件.txt”里@uuid@=。
没值时,“文件\文件.txt”里@uuid@=,生成新的uuid。
结果为:@uuid@=8A320F5EBB8944A1A2447D1448B7DABE
2.bat
“文件\文件.txt”里@uuid@=,等于号后没值时,生成新的uuid。有值时,不改变现有的uuid值。
结果为:@uuid@=8A320F5EBB8944A1A2447D1448B7DABE
作者: Batcher 时间: 2022-3-23 13:30
回复 1# linfeng_321
1.bat- @echo off
- setlocal enabledelayedexpansion
- cd /d "%~dp0"
- set "txtfile=文档\文件.txt"
- set "uuidfile=随机UUID\uuid.txt"
- findstr "[0-9a-zA-Z]" "%uuidfile%" >nul
- if errorlevel 1 (
- for /f %%i in ('powershell -c "[System.Guid]::NewGuid().ToString('N').toUpper()"') do (
- >"%txtfile%" echo @uuid@=%%i
- )
- ) else (
- set /p str=<"%uuidfile%"
- >"%txtfile%" echo @uuid@=!str!
- )
复制代码
作者: Batcher 时间: 2022-3-23 13:32
回复 1# linfeng_321
2.bat- @echo off
- cd /d "%~dp0"
- set "txtfile=文档\文件.txt"
- findstr "@uuid@=[0-9a-zA-Z]" "%txtfile%" >nul
- if errorlevel 1 (
- for /f %%i in ('powershell -c "[System.Guid]::NewGuid().ToString('N').toUpper()"') do (
- >"%txtfile%" echo @uuid@=%%i
- )
- )
复制代码
作者: linfeng_321 时间: 2022-3-23 13:39
回复 2# Batcher
大佬".\文档\文件.txt",保留现有txt文件格式- ;编码ANSI/GB2312
-
- @uuid@=
- @2@=
- @1@=
- @33@=
- @44@=
复制代码
作者: zaqmlp 时间: 2022-3-23 14:17
本帖最后由 zaqmlp 于 2022-3-23 20:02 编辑
1- <# :
- cls&echo off&cd /d "%~dp0"&rem 编码ANSI
- powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText(\"%~f0\",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
- pause
- exit
- #>
- $txtfile=".\文档\文件.txt";
- $uuidfile=".\随机UUID\uuid.txt";
- if(-not (test-path -literal $txtfile)){write-host ('"'+$txtfile+'" 未找到');exit;}
- $enc=[Text.Encoding]::GetEncoding('GB2312');
- $uuid='';
- if(test-path -literal $uuidfile){
- $text=[IO.File]::ReadAllText($uuidfile, $enc);
- $m=[regex]::match($text, '(?i)[\dA-F]{10,}');
- if($m.Success){$uuid=$m.groups[0].value;}
- }
- if($uuid -eq ''){$uuid=[System.Guid]::NewGuid().ToString("N").toUpper();}
- $text=[IO.File]::ReadAllText($txtfile, $enc);
- $text=[regex]::replace($text, '(@uuid@=)[^\r\n]*', {
- param($m);
- $m.groups[1].value+$uuid;
- });
- [IO.File]::WriteAllText($txtfile, $text, $enc);
复制代码
作者: zaqmlp 时间: 2022-3-23 14:21
2- <# :
- cls&echo off&cd /d "%~dp0"&rem 编码ANSI
- powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText(\"%~f0\",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
- pause
- exit
- #>
- $txtfile=".\文档\文件.txt";
- if(-not (test-path -literal $txtfile)){write-host ('"'+$txtfile+'" 未找到');exit;}
- $enc=[Text.Encoding]::GetEncoding('GB2312');
- $text=[IO.File]::ReadAllText($txtfile, $enc);
- $m=[regex]::match($text, '(@uuid@=)[^\s]+');
- if(-not $m.Success){
- $uuid=[System.Guid]::NewGuid().ToString("N").toUpper()
- $text=[regex]::replace($text, '@uuid@=', {
- param($m);
- $m.groups[0].value+$uuid;
- });
- [IO.File]::WriteAllText($txtfile, $text, $enc);
- }
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |