在Windows中修剪文本文件末尾的多余pipe道

所以基本上我有一个输出一个文本文件的pipe道分隔的过程,看起来像这样:

|abc123|1*|004|**gobbligook|001|%|2014-01-01||||||||||||| 

这只是一个例子,我不确定答案是否涉及正则expression式。 如果是这样,我会把实际的行。 无论如何

问题

所以对于这个例子来说,接受这个文件的导入过程是寻找8个pipe道,但是如果在8个导入过程失败之后再看到更多的pipe道,那么就有20个pipe道。

是否有一个过程,我可以在Windows环境中使用修剪整个文件的结尾尾随pipe道?

UPDATE

Magoo给了我一个很好的答案,我正在工作,但我一直得到这个错误:在这个时候定界符是意外的

这是代码:

 @ECHO OFF SETLOCAL SET "sourcedir=C:\Users\Desktop\Pipe Delimiter Project" SET "destdir=C:\Users\Desktop\Pipe Delimiter Project" ( FOR /f "tokens=1-7delims=|" %%a IN ('TYPE "%sourcedir%\test.txt"') DO ( ECHO(^|%%a^|%%b^|%%c^|%%d^|%%e^|%%f^|%%g^| ) )>%destdir%\newfile.txt 

任何人都知道什么是错的? 我也只是从问题| abc123 | .. |放行 像6次粘贴在文件中…谢谢!

Solutions Collecting From Web of "在Windows中修剪文本文件末尾的多余pipe道"

 @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION SET "sourcedir=." SET "destdir=U:\destdir" ( FOR /f "delims=" %%a IN ('TYPE "%sourcedir%\q22863616.txt"') DO ( SET "line=%%a" ECHO(!line:~0,-12! ) )>%destdir%\newfile.txt GOTO :EOF 

我使用了一个名为q22863616.txt的文件, q22863616.txt包含您的数据以供我测试。 产生newfile.txt

假设最后的12个字段都是空的,否则缺少信息。


另一种形式,给予更多的信息

 @ECHO OFF SETLOCAL SET "sourcedir=." SET "destdir=U:\destdir" ( FOR /f "tokens=1-7delims=|" %%a IN ('TYPE "%sourcedir%\q22863616.txt"') DO ( ECHO(^|%%a^|%%b^|%%c^|%%d^|%%e^|%%f^|%%g^| ) )>%destdir%\newfile.txt 

好 – 第三次是魅力。

 @ECHO OFF SETLOCAL enabledelayedexpansion SET "sourcedir=." SET "destdir=U:\destdir" :: remove variables starting $ FOR /F "delims==" %%a In ('set $ 2^>Nul') DO SET "%%a=" ( FOR /f "delims=" %%a IN ('TYPE "%sourcedir%\q22863616.txt"') DO ( SET "$0=%%a" SET "$1=%%a" FOR /l %%c IN (1,1,8) DO SET "$1=!$1:*|=!" SET "$2=%%a" SET "$3=" SET /a tot=0 FOR /f "delims=:" %%e IN ('set $^|findstr /o /r "$"') DO SET /a tot=%%e - !tot! - 5 CALL :show !tot! CALL ECHO %%$2:~0,-!tot!%% ) )>%destdir%\newfile.txt GOTO :EOF :show CALL SET "$3=%%$2:~0,-%1%%" FOR /f "tokens=1*delims==" %%y IN ('set $3') DO ECHO(%%z GOTO :eof 

这在数据中似乎不受%的影响,但扼杀!& 。 你付出你的钱,你选择了…

这应该吃拖尾管道,但离开其中8

 @echo off type "file.txt"| repl "(.*?\|{8})\|*$" "$1" >"newfile.txt" 

这使用一个称为repl.bat的帮助程序批处理文件 – 从以下网址下载: https : repl.bat

repl.bat放在与批处理文件相同的文件夹中或位于路径上的文件夹中。