Board logo

标题: 【已解决】【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
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. cd /d "%~dp0"
  4. set "txtfile=文档\文件.txt"
  5. set "uuidfile=随机UUID\uuid.txt"
  6. findstr "[0-9a-zA-Z]" "%uuidfile%" >nul
  7. if errorlevel 1 (
  8.     for /f %%i in ('powershell -c "[System.Guid]::NewGuid().ToString('N').toUpper()"') do (
  9.         >"%txtfile%" echo @uuid@=%%i
  10.     )
  11. ) else (
  12.     set /p str=<"%uuidfile%"
  13.     >"%txtfile%" echo @uuid@=!str!
  14. )
复制代码

作者: Batcher    时间: 2022-3-23 13:32

回复 1# linfeng_321


2.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. set "txtfile=文档\文件.txt"
  4. findstr "@uuid@=[0-9a-zA-Z]" "%txtfile%" >nul
  5. if errorlevel 1 (
  6.     for /f %%i in ('powershell -c "[System.Guid]::NewGuid().ToString('N').toUpper()"') do (
  7.         >"%txtfile%" echo @uuid@=%%i
  8.     )
  9. )
复制代码

作者: linfeng_321    时间: 2022-3-23 13:39

回复 2# Batcher


大佬".\文档\文件.txt",保留现有txt文件格式
  1. ;编码ANSI/GB2312
  2. @uuid@=
  3. @2@=
  4. @1@=
  5. @33@=
  6. @44@=
复制代码

作者: zaqmlp    时间: 2022-3-23 14:17

本帖最后由 zaqmlp 于 2022-3-23 20:02 编辑

1
  1. <# :
  2. cls&echo off&cd /d "%~dp0"&rem 编码ANSI
  3. powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText(\"%~f0\",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
  4. pause
  5. exit
  6. #>
  7. $txtfile=".\文档\文件.txt";
  8. $uuidfile=".\随机UUID\uuid.txt";
  9. if(-not (test-path -literal $txtfile)){write-host ('"'+$txtfile+'" 未找到');exit;}
  10. $enc=[Text.Encoding]::GetEncoding('GB2312');
  11. $uuid='';
  12. if(test-path -literal $uuidfile){
  13.     $text=[IO.File]::ReadAllText($uuidfile, $enc);
  14.     $m=[regex]::match($text, '(?i)[\dA-F]{10,}');
  15.     if($m.Success){$uuid=$m.groups[0].value;}
  16. }
  17. if($uuid -eq ''){$uuid=[System.Guid]::NewGuid().ToString("N").toUpper();}
  18. $text=[IO.File]::ReadAllText($txtfile, $enc);
  19. $text=[regex]::replace($text, '(@uuid@=)[^\r\n]*', {
  20.     param($m);
  21.     $m.groups[1].value+$uuid;
  22. });
  23. [IO.File]::WriteAllText($txtfile, $text, $enc);
复制代码

作者: zaqmlp    时间: 2022-3-23 14:21

2
  1. <# :
  2. cls&echo off&cd /d "%~dp0"&rem 编码ANSI
  3. powershell -NoProfile -ExecutionPolicy bypass "[IO.File]::ReadAllText(\"%~f0\",[Text.Encoding]::GetEncoding('GB2312'))|Invoke-Expression"
  4. pause
  5. exit
  6. #>
  7. $txtfile=".\文档\文件.txt";
  8. if(-not (test-path -literal $txtfile)){write-host ('"'+$txtfile+'" 未找到');exit;}
  9. $enc=[Text.Encoding]::GetEncoding('GB2312');
  10. $text=[IO.File]::ReadAllText($txtfile, $enc);
  11. $m=[regex]::match($text, '(@uuid@=)[^\s]+');
  12. if(-not $m.Success){
  13.     $uuid=[System.Guid]::NewGuid().ToString("N").toUpper()
  14.     $text=[regex]::replace($text, '@uuid@=', {
  15.         param($m);
  16.         $m.groups[0].value+$uuid;
  17.     });
  18.     [IO.File]::WriteAllText($txtfile, $text, $enc);
  19. }
复制代码





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2