Windows 批量等效于 linux 剪切、粘贴和管道到文件

Windows batch equivalent for linux cut, paste and pipe to file

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

A.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

得到

merged.csv

dog;monkey
cat;wolf

不幸的是,我已经离开很久了 windows。我如何剪切、粘贴和传输到 bash 中的文件?

并行读取文件的替代方法是将一组文件存储在伪散列中 table

:: Q:\Test19\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:\Test19\SO_57771554.cmd
dog;cat
monkey;wolf

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

:: Q:\Test19\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