คำถามติดแท็ก batch-file

ชุดไฟล์เป็นไฟล์ข้อความที่มีชุดคำสั่งที่ดำเนินการโดยล่ามคำสั่งในระบบ MS-DOS, IBM OS / 2 หรือระบบ Microsoft Windows



8
วิธีตรวจสอบพารามิเตอร์บรรทัดคำสั่งในไฟล์“ .bat”
ระบบปฏิบัติการของฉันคือ Windows Vista ฉันต้องมีไฟล์ ".bat" ซึ่งฉันต้องตรวจสอบว่าผู้ใช้ป้อนพารามิเตอร์บรรทัดคำสั่งหรือไม่ หากเป็นเช่นนั้นหากพารามิเตอร์เท่ากับ-bฉันจะทำบางอย่างไม่เช่นนั้นฉันจะตั้งค่าสถานะ "อินพุตไม่ถูกต้อง" หากผู้ใช้ไม่ได้ป้อนพารามิเตอร์บรรทัดคำสั่งฉันจะทำบางอย่าง ฉันได้สร้างไฟล์. bat ต่อไปนี้ มันใช้งาน-bได้และไม่เท่ากับ-bเคส - แต่จะล้มเหลวเมื่อผู้ใช้ไม่ส่งผ่านพารามิเตอร์บรรทัดคำสั่งใด ๆ ฉันมักจะได้รับข้อผิดพลาด: GOTO was unexpected at this time. ใครช่วยบอกทีว่าฉันทำอะไรผิดที่นี่? ECHO OFF CLS ECHO. IF [%1]==[/?] GOTO BLANK IF %1=="-b" GOTO SPECIFIC IF NOT %1=="-b" GOTO UNKNOWN :SPECIFIC ECHO SPECIFIC GOTO DONE :BLANK ECHO No Parameter …
104 windows  file  batch-file  cmd 

2
Windows batch SET ภายในถ้าไม่ทำงาน
เมื่อฉันเรียกใช้สคริปต์นี้ (จากไฟล์. bat): set var1=true if "%var1%"=="true" ( set var2=myvalue echo %var2% ) ฉันมักจะได้รับ: ECHO is on. ความหมายvar2ไม่ได้ตั้งค่าตัวแปรจริงๆ ใครก็ได้โปรดช่วยฉันเข้าใจว่าทำไม?

15
วิธีคัดลอกโครงสร้างไดเร็กทอรี แต่รวมเฉพาะไฟล์บางไฟล์ (โดยใช้ไฟล์แบตช์ Windows)
ตามชื่อเรื่องฉันจะคัดลอกโครงสร้างไดเร็กทอรีซ้ำได้อย่างไร แต่รวมเฉพาะบางไฟล์เท่านั้น เช่นกำหนดโครงสร้างไดเร็กทอรีต่อไปนี้: folder1 folder2 folder3 data.zip info.txt abc.xyz folder4 folder5 data.zip somefile.exe someotherfile.dll ไฟล์data.zipและinfo.txtสามารถปรากฏได้ทุกที่ในโครงสร้างไดเร็กทอรี ฉันจะคัดลอกโครงสร้างไดเร็กทอรีแบบเต็มได้อย่างไร แต่รวมเฉพาะไฟล์ชื่อ data.zip และ info.txt (ควรละเว้นไฟล์อื่น ๆ ทั้งหมด) โครงสร้างไดเร็กทอรีผลลัพธ์ควรมีลักษณะดังนี้: copy_of_folder1 folder2 folder3 data.zip info.txt folder4 folder5 data.zip

4
การแทนที่สตริงในไฟล์แบตช์
เราสามารถแทนที่สตริงในไฟล์แบตช์โดยใช้คำสั่งต่อไปนี้ set str="jump over the chair" set str=%str:chair=table% เส้นเหล่านี้ใช้ได้ดีและเปลี่ยนสตริง "กระโดดข้ามเก้าอี้" เป็น "กระโดดข้ามโต๊ะ" ตอนนี้ฉันต้องการแทนที่คำว่า "เก้าอี้" ในสตริงด้วยตัวแปรบางตัวและฉันไม่รู้ว่าจะทำอย่างไร set word=table set str="jump over the chair" ?? ความคิดใด ๆ ?

17
ฉันสามารถปิดบังข้อความที่ป้อนในไฟล์ค้างคาวได้หรือไม่
ฉันกำลังเขียนไฟล์แบตช์เพื่อรันโปรแกรมอื่น ๆ ในกรณีนี้ฉันต้องขอรหัสผ่าน ฉันมีวิธีการปิดบังข้อความที่ป้อนหรือไม่ ฉันไม่จำเป็นต้องพิมพ์อักขระ ******* แทนอักขระที่ป้อน พฤติกรรมการแจ้งรหัสผ่านของ Linux (พิมพ์อะไรขณะพิมพ์) ก็เพียงพอแล้ว @echo off SET /P variable=Password : echo %variable% Pause สิ่งนี้จะอ่านอินพุต แต่ฉันไม่สามารถปิดบังข้อความโดยใช้วิธีนี้ได้


2
เครื่องหมาย at (@) ในไฟล์แบตช์คืออะไรและทำหน้าที่อะไร
ผู้ที่คุ้นเคยกับการเขียนสคริปต์แบตช์ windows / dos จากระยะไกลจะรู้จักบรรทัดนี้: @echo off เป็นเวลาหลายวันที่ฉันมีความสุขกับความรู้สึกที่ว่านั่น@คือวิธีecho offที่จะเขียนไว้ที่ด้านบนของชุดงานและนั่นก็คือมัน อย่างไรก็ตามเมื่อเร็ว ๆ นี้ฉันได้ข้ามเส้นแบบนี้: @php foo bar และอีกบรรทัดดังนี้: @call \\network\folder\batch.bat สิ่งนี้ตอกย้ำความสงสัยของฉันที่@มีมากกว่าแค่การechoสลับโหมด อย่างไรก็ตาม@ไม่มีอยู่ในWindows XP: AZ การอ้างอิงบรรทัดคำสั่งซึ่งฉันพยายามใช้เป็นข้อมูลอ้างอิงดังนั้นฉันไม่แน่ใจว่าจะค้นหาข้อมูลที่ชัดเจนเกี่ยวกับสิ่งนี้ได้อย่างไร: การ@ลงชื่อเข้าใช้ชุดงานคืออะไรคำศัพท์สำหรับมันคืออะไรและทำหน้าที่อะไร

12
คัดลอกไฟล์โดยไม่ต้องเขียนทับ
ฉันไม่สามารถหาวิธีในบรรทัดคำสั่งเพื่อพูดว่า "คัดลอกไฟล์ทั้งหมดจากไดเร็กทอรี A ไปยังไดเร็กทอรี B แต่ถ้าไฟล์มีอยู่แล้วในไดเร็กทอรี B อย่าเขียนทับไม่ว่าไฟล์ใดจะใหม่กว่า และไม่ต้องแจ้งให้ฉันทราบ " ฉันเคยผ่านการคัดลอกย้าย xcopy & robocopy และสิ่งที่ใกล้เคียงที่สุดที่ฉันจะได้รับคือคุณสามารถบอก robocopy ว่า "คัดลอก A ถึง B แต่อย่าเขียนทับไฟล์ที่ใหม่กว่าด้วยไฟล์ที่เก่ากว่า" แต่นั่นไม่ได้ผลสำหรับฉัน . ฉันดู xxcopy แต่ทิ้งไปเนื่องจากฉันไม่ต้องการให้บุคคลที่สามต้องพึ่งพาเหตุการณ์หลังการสร้าง Visual Studio ซึ่งจะต้องให้ผู้ใช้ SVN รายอื่นต้องติดตั้งเครื่องมือนั้นเพื่อทำการสร้าง ฉันต้องการเพิ่มบรรทัดคำสั่งให้กับเหตุการณ์หลังการสร้างใน Visual Studio 2010 เพื่อให้ไฟล์ที่สร้างจากเท็มเพลต T4สำหรับอ็อบเจ็กต์โมเดลEFใหม่ถูกแจกจ่ายไปยังโฟลเดอร์โปรเจ็กต์ที่เป็นของ แต่สร้างไฟล์ใหม่สำหรับอ็อบเจ็กต์ที่มีอยู่ อย่าเขียนทับไฟล์ปลายทางที่อาจแก้ไขได้ เนื่องจากเทมเพลต T4 สร้างขึ้นใหม่ซอร์สไฟล์จะใหม่กว่าเสมอและฉันไม่สามารถใช้สวิตช์ "ใหม่กว่า" ได้อย่างน่าเชื่อถือฉันไม่คิดว่า ฉันใช้คลาสบางส่วนสำหรับรายการเหล่านั้นที่ฉันทำได้ แต่มีสิ่งอื่นที่ฉันสร้างขึ้นที่ไม่สามารถใช้คลาสบางส่วนได้ (เช่นการสร้างไฟล์ EditorTemplate หรือ …

8
ไฟล์แบตช์ - จำนวนอาร์กิวเมนต์บรรทัดคำสั่ง
เพียงแค่แปลงเชลล์สคริปต์บางส่วนเป็นไฟล์แบตช์และมีสิ่งหนึ่งที่ดูเหมือนว่าฉันไม่สามารถหาได้ ... และนั่นคือการนับจำนวนอาร์กิวเมนต์บรรทัดคำสั่งง่ายๆ เช่น. ถ้าคุณมี: myapp foo bar ในเชลล์: $ # -> 2 $ * -> แถบ foo $ 0 -> myapp $ 1 -> ฟู $ 2 -> บาร์ ในชุด ?? -> 2 <---- คำสั่งอะไร?! % * -> แถบฟู % 0 -> myapp % 1 -> ฟู % 2 …

5
กำหนดค่าของตัวแปรด้วยผลลัพธ์ของคำสั่งในไฟล์แบตช์ Windows
เมื่อทำงานในสภาพแวดล้อมBashเพื่อตั้งค่าของตัวแปรอันเป็นผลมาจากคำสั่งฉันมักจะทำ: var=$(command -args) ที่เป็นชุดตัวแปรโดยคำสั่งvar command -argsจากนั้นฉันสามารถเข้าถึงตัวแปรนั้นเป็น$varไฟล์. วิธีที่ธรรมดากว่าในการทำสิ่งนี้ซึ่งเข้ากันได้กับ Unix shell เกือบทุกชนิดคือ: set var=`command -args` ที่กล่าวว่าฉันจะตั้งค่าของตัวแปรด้วยผลลัพธ์ของคำสั่งในไฟล์แบตช์ Windows ได้อย่างไร ฉันได้ลองแล้ว: set var=command -args แต่ฉันพบว่าvarถูกตั้งค่าcommand -argsเป็นมากกว่าผลลัพธ์ของคำสั่ง


7
ฉันจะตรวจสอบได้อย่างไรว่าอาร์กิวเมนต์ถูกกำหนดเมื่อเริ่มต้น / เรียกไฟล์แบตช์
ฉันพยายามใช้ตรรกะการตรวจสอบความถูกต้องต่อไปนี้ในไฟล์แบตช์ แต่บล็อก "การใช้งาน" จะไม่ดำเนินการแม้ว่าจะไม่มีพารามิเตอร์ให้กับไฟล์แบตช์ก็ตาม if ("%1"=="") goto usage @echo This should not execute @echo Done. goto :eof :usage @echo Usage: %0 <EnvironmentName> exit 1 ผมทำอะไรผิดหรือเปล่า?


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