您可以附加到文件就像一個循環內這個:
for ... %%i in (...) do (
echo something >> output.txt
echo or other
)
上面的內容只會在輸出文件中放入「something」行,而「or other」行則會打印到控制檯上。
您也可以通過將重定向操作外循環寫入整個迴路輸出到文件:
for ... %%i in (...) do (
echo something
echo or other
) >> output.txt
,將放在兩個「東西」和「或其他」行到輸出文件。
注意,使用追加重定向操作符(>>
)需要截斷或刪除已存在的文件時,如果你不希望保留這是之前的環路出現的內容:
type nul> output.txt
你可以通過使用寫入重定向操作符(>
)來避免這種額外的步驟,但是,你需要把括號中的整個循環:
(for ... %%i in (...) do (
echo something
echo or other
)) > output.txt
順便說一句,你也可以把重定向操作符開頭一條線的,這是很好的做法,這樣做的,因爲它避免了不由自主地加入尾隨空格輸出線:
for ... %%i in (...) do (
>>output.txt echo something
echo or other
)
或
>>output.txt for ... %%i in (...) do (
echo something
echo or other
)
當然,你也可以混合使用這兩種方法(內部重定向和外循環),讓你獲得在一個文件中的一些輸出以及輸出的其餘部分在另一:
>>output1.txt for ... %%i in (...) do (
>>output2.txt echo something
echo or other
)
如果你想從CSV作爲輸出濾波的記錄,你需要與r econstruct輸出線,雖然:
>>output.csv echo %%~i;%%~j;%%~k
在您的特定情況下可能更容易,只需使用find
而不是用一個循環工作:
>output.csv (type input.csv | find ";CNSHA")
既然你還標記了你的問題powershell我也想拋出一個PowerShell的解決方案,只是爲了好的措施:
$headers = 'foo', 'bar', 'baz'
Import-Csv 'input.csv' -Delimiter ';' -Header $headers | Where-Object {
$_.baz -eq 'CNSHA'
} | Export-Csv 'output.csv' -NoType
以上內容將第三個字段的值爲「CNSHA」的所有記錄寫入新文件。如果您的輸入CSV帶有標題,請刪除-Header $headers
。更改Export-Csv
聲明是這樣的,如果你不想在輸出頭:
... | ConvertTo-Csv -NoType | Select-Object -Skip 1 | Set-Content 'output.csv'
我已經格式化您的代碼,但它似乎看起來不正確,如果它是錯誤的,可以請你編輯它,以便潛在的響應者可以這樣做。 – Compo
請避免張貼鏈接到外部資源。如果他們的內容與你的問題相關:把你的問題的內容。否則,不要打擾張貼鏈接。 –
完成 - 只是刪除此鏈接 - 感謝您的指導 –