ไปป์ + หมายเลขหนึ่งหลักไม่ได้สะท้อน


0

ฉันมีสคริปต์ที่อ่านจำนวนแถวของไฟล์และตั้งค่าจำนวนนี้เป็นตัวแปร ROWCOUNT.

ดังนั้นเมื่อต้องการเพิ่มส่วนท้ายเช่น "F | 5" ในไฟล์ file.txt ด้วย ROWCOUNT ส่วนหัวลบฉันทำการลบและด้วย echo ส่งไปยังไฟล์ แต่ในบรรทัดนั้นฉันไม่แน่ใจว่าส่วนใดที่ล้มเหลวเป็น "^ |" ควรพิมพ์ไปป์ในหน้าจอจะแสดง F | ไฟล์ที่สร้างขึ้นเท่านั้นและว่างเปล่า

นอกจากนี้สิ่งนี้จะหยุดเป็นปัญหาเมื่อ ROWCOUNT & gt; 10

@echo off
set ROWCOUNT=7
set /A TT=ROWCOUNT-1
echo F^|%TT%>>C:\Users\file.txt
pause

แม้จะมี echo off นี่คือเอาต์พุตกราฟิกและ file.txt ว่างเปล่า:

F|
Press any key to continue . . .

คำตอบ:


0

หมายเลขทันทีก่อนการเปลี่ยนเส้นทางหมายถึงตัวจัดการไฟล์ เมื่อคุณใช้การเปลี่ยนเส้นทางเช่น >>someFileมันหมายถึงจริงๆ 1>>someFileโดยที่ 1 หมายถึง stdout นอกจากนี้ยังมี 2 สำหรับ stderr และ 0 สำหรับ stdin ตัวจัดการไฟล์อื่น ๆ สามารถกำหนดได้โดยรหัสของคุณ

รหัสของคุณมีหมายเลขก่อนการเปลี่ยนเส้นทางดังนั้นจึงถูกตีความว่าเป็นตัวจัดการไฟล์ที่ไม่ได้กำหนด

วิธีแก้ปัญหาคือเพียงแค่ย้ายการเปลี่ยนเส้นทางไปข้างหน้า

>>C:\Users\file.txt echo F^|%TT%

อีกตัวเลือกหนึ่งคือการใช้วงเล็บ

(echo F^|%TT%)>>C:\Users\file.txt

ตัวเลือกที่สอง (echo F ^ |% TT%) ใส่วงเล็บไว้ในไฟล์ด้วยเช่นกัน แต่ตัวแรกทำงานเหมือนเครื่องราง! ขอบคุณที่ช่วยเหลือ!
bot20141209

@ bot20141209 - ตัวเลือกที่สองไม่ควรใส่วงเล็บในผลลัพธ์ถ้ามันถูกพิมพ์ตรงตามที่ฉันได้แสดงเว้นแต่ค่า TT ของคุณมี ).
dbenham

ใช่คุณถูกต้อง. ก่อนหน้านี้ฉันได้เขียนเสียงสะท้อน (F ^ |% TT%) ดังนั้นนี่คือสาเหตุที่พิมพ์ในวงเล็บ
bot20141209
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.