![](/img/trans.png)
[英]Parse a text file using batch script and remove the first 2 characters from each line
[英]How to remove leading whitespace from first line of text files using batch file in Windows?
我有大约 700.tcx 文件(旧的 GPS 运行数据,如果你感兴趣的话......)。
第一行是:
<?xml version="1.0" encoding="UTF-8"?>
开头是 10 个空格,这使我无法将此数据导入 Garmin Connect(我有一个新的 Garmin 手表)。
所以,我需要从这 700 个文件的第一行的前面删除这个空白。 我正在尝试使用批处理文件自动执行此过程(尽管考虑到我花了多长时间尝试执行此操作,手动执行会更快......)
到目前为止,我有:
@echo off
setlocal enabledelayedexpansion
for /F "tokens=1" %%A in (C:\[path]\[filename].tcx) do (
set line=%%A
echo !line:~1! >> C:\[path]\[filename].tcx
)
endlocal
其中 [path] 是当前存储文件的路径,filename 是我正在测试的文件。 一旦我开始工作,我将用 * 替换 [filename[
不幸的是,我所得到的目前还不能正常工作:
首先,它遍历整个文件,而不仅仅是第一行。 其次,在每一行,它不仅删除前导空格,还删除包括第一个字符(“<”)在内的所有内容,然后删除遇到的下一个空格之后的所有内容。
我知道我的尝试有点可悲,但我希望学习!
@ECHO OFF
SETLOCAL
rem The following settings for the directories are names
rem that I use for testing and deliberately includes spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.
SET "sourcedir=u:\your files"
SET "destdir=u:\your results"
FOR %%e IN ("%sourcedir%\*.tcx") DO (
SET "first=y"
(
FOR /f "usebackqtokens=*" %%y IN ("%%e") DO IF DEFINED first SET "first="&ECHO %%y
FOR /f "usebackqskip=1delims=" %%y IN ("%%e") DO ECHO %%y
)>"%destdir%\%%~nxe"
)
GOTO :EOF
在应用于真实数据之前,请始终对照测试目录进行验证。
请注意,如果文件名不包含空格等分隔符,则可以省略usebackq
和%filename1%
周围的引号。
这应该完成任务。 它只是从每个文件中读取第一行,删除前导空格(默认delims
之一)并将其发送到 output,重置第first
标志以防止剩余数据反流。
下一步是重现除第一行以外的所有内容。
通过将两个for
括在括号中并重定向,所有这些都聚集在一起。
请注意,源目录和目标目录必须不同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.