![Board logo](images/default/logo.gif)
标题: [文本处理] [已解决] 批处理如何自动产生随机字母填入文本? [打印本页]
作者: dennisle 时间: 2010-9-26 11:38 标题: [已解决] 批处理如何自动产生随机字母填入文本?
請教批處理高手,希望會的高手們不吝指教,謝謝您!!
如何讓批處理自動產生隨機字母填入 sysprep.ini 文本的某區段,
希望批處理自動產生隨機字母不超過 (15Byte),
產生的隨機字母填在 ComputerName=(填入區段)
sysprep.ini 文本內容如下:
;SetupMgrTag
[Data]
AutoPartition=1
MsDosInitiated="0"
UnattendedInstall="Yes"
[Unattended]
UnattendMode=FullUnattended
OemSkipEula=Yes
OemPreinstall=No
TargetPath=\WINDOWS
[GuiUnattended]
AdminPassword=*
EncryptedAdminPassword=NO
OEMSkipRegional=1
TimeZone=220
OemSkipWelcome=1
[UserData]
ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
FullName="User"
OrgName=""
ComputerName=
[RegionalSettings]
LanguageGroup=9
Language=00000404
[Branding]
BrandIEUsingUnattended=Yes
[Identification]
JoinWorkgroup=WORKGROUP
[Networking]
InstallDefaultComponents=Yes
[ 本帖最后由 dennisle 于 2010-9-29 13:07 编辑 ]
作者: dennisle 时间: 2010-9-27 16:41
沒人回應!!
請教批處理高手,這可有辦法呢?
作者: edmond 时间: 2010-9-27 18:51
- @echo off
- setlocal enabledelayedexpansion
- set t=abcdefghigklmnopqrstuvwxyz
- set /a m=!random!%%15
- set r=1
- :loop
- set /a n=!random!%%26
- set s!r!=!t:~%n%,1!
- if !r! lss !m! (set /a r+=1&goto loop)
- set ram=!s1!!s2!!s3!!s4!!s5!!s6!!s7!!s8!!s9!!s10!!s11!!s12!!s13!!s14!!s15!
- for /f "eol=~ tokens=1,2 delims==" %%a in ('findstr /n "^" sysprep.ini') do (
- set p=%%a
- set p=!p:*:=!
- if not defined p (echo.>>tem.txt
- ) else if "!p!"==" ComputerName" (echo, ComputerName=!ram!>>tem.txt
- ) else (echo !p!>>tem.txt)
- )
- del /q sysprep.ini
- ren tem.txt sysprep.ini
- pause
复制代码
作者: dennisle 时间: 2010-9-28 00:00
Edmond 大感謝您的回覆:
這方法會把文本裡的等號剔除掉,
其實等號後面是有數據的!!
很抱歉!沒有把文本表達清楚,
小弟把文本 PO 上,麻煩您了,
感激不盡!!
;SetupMgrTag
[Data]
AutoPartition=1
MsDosInitiated="0"
UnattendedInstall="Yes"
[Unattended]
UnattendMode=FullUnattended
OemSkipEula=Yes
OemPreinstall=No
TargetPath=\WINDOWS
[GuiUnattended]
AdminPassword=*
EncryptedAdminPassword=NO
OEMSkipRegional=1
TimeZone=220
OemSkipWelcome=1
[UserData]
ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
FullName="User"
OrgName=""
ComputerName=
[RegionalSettings]
LanguageGroup=9
Language=00000404
[Branding]
BrandIEUsingUnattended=Yes
[Identification]
JoinWorkgroup=WORKGROUP
[Networking]
InstallDefaultComponents=Yes
作者: netbenton 时间: 2010-9-28 05:08
把源文中的:
[UserData]
ProductID=
FullName=
OrgName=
ComputerName=(填入區段)
改成:
[UserData]
ProductID=
FullName=
OrgName=
ComputerName==!ram!
再读取文本,直接echo;%%a就可以了,不用判断
作者: edmond 时间: 2010-9-28 08:13
斑竹高明!
作者: edmond 时间: 2010-9-28 08:41
- @echo off
- setlocal enabledelayedexpansion
- set t=abcdefghigklmnopqrstuvwxyz
- set /a m=!random!%%15
- set r=1
- :loop
- set /a n=!random!%%26
- set s!r!=!t:~%n%,1!
- if !r! lss !m! (set /a r+=1&goto loop)
- set ram=!s1!!s2!!s3!!s4!!s5!!s6!!s7!!s8!!s9!!s10!!s11!!s12!!s13!!s14!!s15!
- for /f "eol=~ tokens=1,2 delims=#" %%a in ('findstr /n "^" sysprep.ini') do (
- set p=%%a
- set p=!p:*:=!
- if not defined p (echo.>>tem.txt
- ) else if "!p:~4,12!"=="ComputerName" (echo, ComputerName=!ram!>>tem.txt
- ) else (echo !p!>>tem.txt)
- )
- del /q sysprep.ini
- ren tem.txt sysprep.ini
- pause
复制代码
这样也行,但5楼的方法简单准确!
作者: Batcher 时间: 2010-9-28 08:53 标题: 回复 4楼 的帖子
能否更新到顶楼?
作者: dennisle 时间: 2010-9-28 10:21
感謝你們回覆:
小弟受教了,不好意思再請教一個問題
依這文本如前面空格異動的話該調整哪呢?
因不同軟件所製作的回應檔空格會不一,
假如是前面沒有空格呢?
[UserData]
ProductID=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
FullName="User"
OrgName=""
ComputerName=PC
小弟又該如何調整無空格! 謝謝您!!
for /f "eol=~ tokens=1,2 delims=#" %%a in ('findstr /n "^" sysprep.ini') do (
set p=%%a
set p=!p:*:=!
if not defined p (echo.>>tem.txt
) else if "!p:~4,12!"=="ComputerName" (echo, ComputerName=!ram!>>tem.txt
) else (echo !p!>>tem.txt)
)
作者: edmond 时间: 2010-9-28 12:43
- @echo off
- setlocal enabledelayedexpansion
- set t=abcdefghigklmnopqrstuvwxyz
- set /a m=!random!%%15
- set r=1
- :loop
- set /a n=!random!%%26
- set s!r!=!t:~%n%,1!
- if !r! lss !m! (set /a r+=1&goto loop)
- set ram=!s1!!s2!!s3!!s4!!s5!!s6!!s7!!s8!!s9!!s10!!s11!!s12!!s13!!s14!!s15!
- for /f "eol=~ tokens=1,2 delims==" %%a in ('findstr /n "^" sysprep.ini') do (
- set p=%%a
- set j=%%b
- set p=!p:*:=!
- if not defined p (echo.>>tem.txt
- ) else if "!p:~-12!"=="ComputerName" (echo,!p!=!ram!>>tem.txt
- ) else if defined j (echo !p!=!j!>>tem.txt) else (echo,!p!>>tem.txt)
- )
- del /q sysprep.ini
- ren tem.txt sysprep.ini
- pause
复制代码
自适应任意空格,下次LZ应该把问题一次描述清楚。
作者: dennisle 时间: 2010-9-28 17:59 标题: 批处理如何自动产生随机字母填入文本?
Edmond大:
非常感謝您不吝指教!!
[ 本帖最后由 dennisle 于 2010-9-29 13:06 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |