ฉันจะเขียนสคริปต์ชุดงานที่ตรวจพบระบบปฏิบัติการที่ทำงานอยู่ได้อย่างไร (dos หรือ Windows CMDline)


-1

ฉันกำลังเขียนสคริปต์ที่:
1. ตรวจสอบว่าระบบปฏิบัติการใดทำงานอยู่ win10 หรือ win8 (เพียงสองตัวเลือกเหล่านี้)
2. มีสาม ค้นหาและแทนที่ -actions
3. เริ่มโปรแกรมที่เป็นของมัน
ด้านล่างเป็นสคริปต์ชุดงานที่พยายาม CMD / DOS:

01    set %versionOS%  to ver
           REM in the above line I want to fill a variable called
           REM %versionOS% with the output of the ver commmand

02    IF  %versionOS% = "Microsoft Windows [Version 10.0.14393]"
           REM in the above line I check if variable
           REM %versionOS% equals "Microsoft Windows [Version 10.0.14393]"

03    command to close an application.
           REM in the above line I want to close an application 
           REM  c:\path\WinCmd.exe this line could be the 1st line too, yes   

04   goto Win10
05        *commmands that change wincmd.ini to one that's suited for Win8
06        (I've figured this one out already)*
07    goto ProgStart
08    :Win10
09         *commmands that change wincmd.ini to one that's suited for Win10*
10   
11    :ProgStart
12     c:\path\WinCmd.exe 

ฉันต้องการความช่วยเหลือใน 3 บรรทัดแรก ขอบคุณ


1
เมื่อเข้าใกล้จากมุมที่แตกต่างเพื่อลบความต้องการการค้นหา / แทนที่คุณสามารถสร้างไฟล์ INI สองเวอร์ชันเรียกว่า WinCmd_8.ini และ WinCmd_10.ini ด้วยความแตกต่างที่เกี่ยวข้อง สิ่งที่คุณต้องการคือไฟล์ BAT / CMD สองไฟล์ที่คล้ายกันพร้อมด้วยสองคำแนะนำ: คัดลอก INI เฉพาะรุ่นไปยัง WinCmd.ini (เขียนทับมัน) จากนั้นเริ่ม / เริ่ม WinCmd ใหม่
Mike Fitzpatrick

@ MikeFitzpatrick มีจุดดี ด้านบนจะทำให้สคริปต์ง่ายขึ้นอย่างมาก แต่นั่นกล่าวว่า SuperUser ไม่ใช่บริการแบบ "โปรดเขียนถึงฉัน" ดังนั้นคำถามของคุณจึงได้รับการพิจารณานอกหัวข้อ หากคุณมีสคริปต์จริงไม่ใช่ภาษาเชิงแนวคิด แต่เป็นภาษา. cmd อย่าลังเลที่จะถามเราว่าทำไมสคริปต์ไม่ทำงานและเราจะช่วยเหลือคุณ
LPChip

การขยายความคิดเห็นของ @ MikeFitzpatrick มีหลายวิธีในการคำนวณหมายเลขรุ่นของระบบปฏิบัติการจาก DOS ดู windows-commandline.com/find-windows-os-version-from-command สำหรับรายละเอียด
Richard

2
การลงคะแนนเพื่อปิดเป็นหัวข้อนอกกฎหมาย - กว้างเกินไปความคิดเห็นและการหาคำแนะนำเกี่ยวกับเครื่องมือ (แม้ว่าฉันจะไม่ได้ลงคะแนนเนื่องจากคำถามเขียนดีและชัดเจน) ขออภัย แต่รู้สึกดีกว่าที่จะให้ข้อเสนอแนะมากกว่าจะไม่ได้!
Dave

1
Stack Overflow มีทรัพยากรที่ดี: ค้นหาและแทนที่ด้วย DOS เช่นเดียวกับ รับรุ่น Windows . อย่างน้อยพวกเขาควรจะเริ่มต้นให้คุณ
Mokubai

คำตอบ:


0

เหมือนกับในการขายบ้านสิ่งที่สำคัญที่สุดสามประการ สถานที่ตั้งสถานที่ตั้ง ดูเหมือนว่าในการตอบคำถามสามสิ่งที่สำคัญที่สุดคือ แรงจูงใจแรงจูงใจและแรงจูงใจ ... เห็นได้ชัด นี่คือทางออกของฉันมันใช้งานได้อย่างมีเสน่ห์ อย่าลังเลที่จะแสดงความคิดเห็นทุกอย่างอาจมีการปรับปรุง .. & lt; 3 & lt; 3 & lt; 3

taskkill /im TOTALCMD64.EXE
IF %USERDOMAIN% == GwenKillerby goto Win10
echo win8
    powershell -Command "(Get-Content f:\totalcmd852\wincmd.ini) | ForEach-Object { $_ -replace 'D\:\\', 'QzQ' } | Set-Content f:\totalcmd852\wincmd.ini"    
    powershell -Command "(Get-Content f:\totalcmd852\wincmd.ini) | ForEach-Object { $_ -replace 'C\:\\', 'D:\' } | Set-Content f:\totalcmd852\wincmd.ini"    
    powershell -Command "(Get-Content f:\totalcmd852\wincmd.ini) | ForEach-Object { $_ -replace 'QzQ', 'C:\' } | Set-Content f:\totalcmd852\wincmd.ini"    
    powershell -Command "(Get-Content f:\totalcmd852\wincmd.ini) | ForEach-Object { $_ -replace '\\',  '\'   } | Set-Content f:\totalcmd852\wincmd.ini"    
goto ProgStart
:Win10
echo win10
     powershell -Command "(Get-Content f:\totalcmd852\wincmd.ini) | ForEach-Object { $_ -replace 'C\:\\', 'QzQ' } | Set-Content f:\totalcmd852\wincmd.ini"
     powershell -Command "(Get-Content f:\totalcmd852\wincmd.ini) | ForEach-Object { $_ -replace 'D\:\\', 'C:\' } | Set-Content f:\totalcmd852\wincmd.ini"
     powershell -Command "(Get-Content f:\totalcmd852\wincmd.ini) | ForEach-Object { $_ -replace 'QzQ', 'D:\' } | Set-Content f:\totalcmd852\wincmd.ini"
     powershell -Command "(Get-Content f:\totalcmd852\wincmd.ini) | ForEach-Object { $_ -replace '\\',  '\'   } | Set-Content f:\totalcmd852\wincmd.ini"
:ProgStart
    f:\totalcmd852\TOTALCMD64.EXE 

(BTW: ถ้ามีใครสามารถบอกฉันได้ว่าทำไม 'C\:\\', 'D:\' 'C' จำเป็น เครื่องหมายทับสองข้างในขณะที่คำว่า 'D' เพียงพอก็จะมีความสุข
ก่อนอื่นฉันพยายามทำให้เป็นไปตามเงื่อนไขกับเวอร์ชันของ Windows ผ่านไฟล์ tmpfile ซึ่งมีความสวยงามและทนทาน

rem VER > tmpFile
rem set /p myvar= < tmpFile
rem del tmpFile

แต่ฉันไม่สามารถทำให้มันใช้งานได้ นอกจากนี้ผลลัพธ์ของ VER ทั้ง Win10 และ 8 นั้นเหมือนกัน: Microsoft Windows [6.xxx] กับ Microsoft Windows [10.xxx] ซึ่งหมายถึงการทำงานกับโทเค็นที่น่าขนลุกเหล่านั้น brrrr!
ฉันเปิดให้วิธีการแก้ปัญหาใด ๆ ที่มีเส้นน้อยหรือซับซ้อนน้อยกว่า หรือคุณรู้สคริปต์ PS เต็มรูปแบบ / batfile ... ;););)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.