首页 > 解决方案 > Windows 批处理等效于 linux 剪切、粘贴和管道到文件

问题描述

我有一个包含 CSV 的文件夹,例如:

一个.csv

pet1;dog
pet2;monkey

B.csv

pet1;cat
pet2;wolf

我现在可以在 bash (Linux) 中重新格式化它们:

for filename in *.csv; do
  CSVBody=$(cat $filename | cut -d ";" -f2 | paste -sd ";" -)
  echo -e "$CSVBody" >> ./converted/merged.csv
done

要得到

合并的.csv

dog;monkey
cat;wolf

不幸的是,我离开窗户很久了。如何在 bash 中剪切、粘贴和管道到文件?

标签: batch-filewindow

解决方案


并行读取文件的另一种方法是将一组存储在伪哈希表中

:: Q:\Test\2019\09\03\SO_57771554.cmd
@Echo off & Setlocal EnableDelayedExpansion

for /f "tokens=1* delims=;" %%A in (A.csv) do Set "File1[%%A]=%%B"

for /f "tokens=1* delims=;" %%A in (B.csv) do Echo !File1[%%A]!;%%B

> Q:\Test\2019\09\03\SO_57771554.cmd
dog;cat
monkey;wolf

编辑由于 Aacini 的宝贵提示,我做错了。

:: Q:\Test\2019\09\03\SO_57771554.cmd
@Echo off & Setlocal EnableDelayedExpansion
for %%F in (*.csv) do (
    Set "Line="
    for /f "tokens=1* delims=;" %%A in (%%F) do Set "Line=!Line!;%%B"
    Echo(!Line:~1!
)

> SO_57771554_2.cmd
dog;monkey
cat;wolf

推荐阅读