我正在尝试创建一个批处理文件,该文件会在每次打开批次时更改ID:用户的一组数字(8 Dig)。我遇到的问题是必须将初始起始数字表示为确切输入。
代码会将ID:12345678更改为一组随机数字,然后超过旧文件。但是如果“ID:12345678”已经被随机化了,它就不会改变任何东西。任何解决方案?
:: Edit a text file, change a defined line, add random numbers (8-dig), then save.
:: Created by RU$$
@echo off
Set /a num1=%random% %% 10
Set /a num2=%random% %% 10
Set /a num3=%random% %% 10
Set /a num4=%random% %% 10
Set /a num5=%random% %% 10
Set /a num6=%random% %% 10
Set /a num7=%random% %% 10
Set /a num8=%random% %% 10
:: not needed (Just displays the random #)
echo %num1%%num2%%num3%%num4%%num5%%num6%%num7%%num8%
:: CD to the dir of text file (remove if in same dir)
cd C:\Users\%username%\Desktop
:: Replace the line of text in .txt file.
powershell -Command "(gc rules.txt) -replace 'ID:12345678', 'ID:%num1%%num2%%num3%%num4%%num5%%num6%%num7%%num8%' | Out-File rules.txt"
pause>NUL
有没有办法使用%number%之类的东西来自动识别这个地方的数字?
'ID:%number%'
例如:
powershell -Command "(gc rules.txt) -replace 'ID:%number%', 'ID:%num1%%num2%%num3%%num4%%num5%%num6%%num7%%num8%' | Out-File rules.txt"
答案 0 :(得分:0)
因为您已经愿意从批处理文件中利用PowerShell,所以为什么不立即执行所有操作:
@Powershell -C "$f=(Join-Path([Environment]::GetFolderPath('Desktop'))'rules.txt');$i=(Get-Random -Max 99999999).ToString('d8');$x='(?<=ID:)\d{8}',$i;(GC $f) -Replace $x|SC $f"
它应该用新创建的八位数随机数字符串替换immediatley跟随字符串ID:
的任何八位数序列。