Batch file 创建批处理脚本以从txt文件中删除列
我有一个文本文件,其中的列使用管道字符(“|”)分隔。 csv有数百列,我只想保留前254列。Batch file 创建批处理脚本以从txt文件中删除列,batch-file,csv,automation,delimited-text,Batch File,Csv,Automation,Delimited Text,我有一个文本文件,其中的列使用管道字符(“|”)分隔。 csv有数百列,我只想保留前254列。 如何创建一个批处理脚本来创建一个新的output.txt文件,其中只包含我请求的列?和一个批处理/jscript混合脚本解决方案。如果另存为split.cmd,请使用 @echo off setlocal EnableDelayedExpansion (for /F "delims=" %%a in (input.csv) do ( set "input=%%a" set "output
如何创建一个批处理脚本来创建一个新的output.txt文件,其中只包含我请求的列?和一个批处理/jscript混合脚本解决方案。如果另存为
split.cmd
,请使用
@echo off
setlocal EnableDelayedExpansion
(for /F "delims=" %%a in (input.csv) do (
set "input=%%a"
set "output="
for /L %%b in (1,1,254) do (
for /F "tokens=1* delims=|" %%c in ("!input!") do (
set "output=!output!|%%c"
set "input=%%d"
)
)
echo !output:~1!
)) > output.txt
键入inputfile.txt | split.cmd“|”254>outputfile.txt
@if (@This==@IsBatch) @then
@echo off
rem **** batch zone *********************************************************
setlocal enableextensions
rem arguments : delimiter numberOfColumns
set "delimiter=%~1"
if not defined delimiter set "delimiter=,"
set "columns=%~2"
if not defined columns set "columns=10000"
cscript //nologo //e:Javascript "%~f0"
endlocal
exit /b
@end
// **** Javascript zone *****************************************************
var IN = WScript.StdIn,
OUT = WScript.StdOut;
var shell = WScript.CreateObject("WScript.Shell"),
delimiter = shell.Environment("PROCESS").Item("delimiter"),
columns = shell.Environment("PROCESS").Item("columns") ;
while ( ! IN.AtEndOfStream ){
OUT.WriteLine(IN.ReadLine().split(delimiter).slice(0,columns).join(delimiter));
};