这就是我所拥有的,主要问题是部分文本,我需要的最终结果只是前13个字符,因此任何输入都会锦上添花。
Data2Del.txt:
221459x4ffrd E:\APPSFromXP\expired\tst\5145V.mdb
389231x4ffrd E:\APPSFromXP\expired\tss\5674.dbf
295279x4ffrd E:\APPSFromXP\expired\tss\5504.dbf
代码:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set Test=0
for /F "tokens=*" %%A in (Data2Del.txt) do (
SET /A Test=!Test! + 1
set var!Test!=%%A
echo !%%A!>> Test--OK-2-DELETE--xx.txt
)
set var
pause
Set Var输出正确; 测试 - OK-2-DELETE - xx.txt输出从“\ Apps ......
开始任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
我不完全确定为什么会这样,但问题的原因是你在%% A附近的!
。删除它们,它将工作。
echo %%A>> Test--OK-2-DELETE--xx.txt
答案 1 :(得分:0)
@ECHO OFF
setlocal ENABLEDELAYEDEXPANSION
set Test=0
for /F "tokens=*" %%A in (q29037494.txt) do (
SET /A Test=!Test! + 1
set var!Test!=%%A
SET "anothervar=%%A"
echo !anothervar:~0,13!>> u:\q29037494d.txt
)
set var
GOTO :EOF
我已更改文件名以适合我的设置。
这应该产生
221459x4ffrd
389231x4ffrd
295279x4ffrd
附加到您的文件。我注意到你说" 13个字符"其中包括第一个字符串后面的空格。从输入中获得的期望输出的明确示例将是有用的。
这是输出可以派生的几种方法之一,但明确使用批处理的子串函数
子串语法是
%var:~start,length% if start >=0 and length >0
%var:~start,endpos% if start >=0 and endpos <0
%var:~start,length% if start <0 and length >0
%var:~start,endpos% if start <0 and endpos <0
%
模式,!
可能为delayedexpansion
并且此函数不能应用于%%A