[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决] 批处理如何自动产生随机字母填入文本?

請教批處理高手,希望會的高手們不吝指教,謝謝您!!

如何讓批處理自動產生隨機字母填入 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 编辑 ]
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

沒人回應!!

請教批處理高手,這可有辦法呢?

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set t=abcdefghigklmnopqrstuvwxyz
  4. set /a m=!random!%%15
  5. set r=1
  6. :loop
  7. set /a n=!random!%%26
  8. set s!r!=!t:~%n%,1!
  9. if !r! lss !m! (set /a r+=1&goto loop)
  10. set ram=!s1!!s2!!s3!!s4!!s5!!s6!!s7!!s8!!s9!!s10!!s11!!s12!!s13!!s14!!s15!
  11. for /f "eol=~ tokens=1,2 delims==" %%a in ('findstr /n "^" sysprep.ini') do (
  12.      set p=%%a
  13.      set p=!p:*:=!
  14.      if not defined p (echo.>>tem.txt
  15.         ) else if "!p!"=="    ComputerName"  (echo,    ComputerName=!ram!>>tem.txt
  16.        ) else (echo !p!>>tem.txt)
  17. )
  18. del /q sysprep.ini
  19. ren tem.txt sysprep.ini
  20. pause
复制代码

TOP

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

TOP

把源文中的:
[UserData]
    ProductID=
    FullName=
    OrgName=
    ComputerName=(填入區段)

改成:
[UserData]
    ProductID=
    FullName=
    OrgName=
    ComputerName==!ram!
再读取文本,直接echo;%%a就可以了,不用判断

TOP

斑竹高明!

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set t=abcdefghigklmnopqrstuvwxyz
  4. set /a m=!random!%%15
  5. set r=1
  6. :loop
  7. set /a n=!random!%%26
  8. set s!r!=!t:~%n%,1!
  9. if !r! lss !m! (set /a r+=1&goto loop)
  10. set ram=!s1!!s2!!s3!!s4!!s5!!s6!!s7!!s8!!s9!!s10!!s11!!s12!!s13!!s14!!s15!
  11. for /f "eol=~ tokens=1,2 delims=#" %%a in ('findstr /n "^" sysprep.ini') do (
  12.      set p=%%a
  13.      set p=!p:*:=!
  14.      if not defined p (echo.>>tem.txt
  15.         ) else if "!p:~4,12!"=="ComputerName"  (echo,    ComputerName=!ram!>>tem.txt
  16.        ) else (echo !p!>>tem.txt)
  17. )
  18. del /q sysprep.ini
  19. ren tem.txt sysprep.ini
  20. pause
复制代码
这样也行,但5楼的方法简单准确!

TOP

回复 4楼 的帖子

能否更新到顶楼?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

感謝你們回覆:
小弟受教了,不好意思再請教一個問題
依這文本如前面空格異動的話該調整哪呢?
因不同軟件所製作的回應檔空格會不一,
假如是前面沒有空格呢?

[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)
)

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set t=abcdefghigklmnopqrstuvwxyz
  4. set /a m=!random!%%15
  5. set r=1
  6. :loop
  7. set /a n=!random!%%26
  8. set s!r!=!t:~%n%,1!
  9. if !r! lss !m! (set /a r+=1&goto loop)
  10. set ram=!s1!!s2!!s3!!s4!!s5!!s6!!s7!!s8!!s9!!s10!!s11!!s12!!s13!!s14!!s15!
  11. for /f "eol=~ tokens=1,2 delims==" %%a in ('findstr /n "^" sysprep.ini') do (
  12.      set p=%%a
  13.      set j=%%b
  14.      set p=!p:*:=!
  15.      if not defined p (echo.>>tem.txt
  16.         ) else if "!p:~-12!"=="ComputerName"  (echo,!p!=!ram!>>tem.txt
  17.        ) else if defined j (echo !p!=!j!>>tem.txt) else (echo,!p!>>tem.txt)
  18. )
  19. del /q sysprep.ini
  20. ren tem.txt sysprep.ini
  21. pause
复制代码
自适应任意空格,下次LZ应该把问题一次描述清楚。
1

评分人数

TOP

批处理如何自动产生随机字母填入文本?

Edmond大:

非常感謝您不吝指教!!

[ 本帖最后由 dennisle 于 2010-9-29 13:06 编辑 ]

TOP

返回列表