批处理文件; Echo to file生成部分文本,而输出到屏幕则为全文

时间:2015-03-13 16:37:33

标签: batch-file

这就是我所拥有的,主要问题是部分文本,我需要的最终结果只是前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 ......

开始

任何帮助将不胜感激,谢谢!

2 个答案:

答案 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
  • 长度/ endpos可以省略。如果省略,子字符串是&#34;从开始位置到结束&#34;
  • 对于%模式,
  • !可能为delayedexpansion

并且此函数不能应用于%%A

等元变量 坦率地说,为什么你得到你的输出对我来说是一个谜。

相关问题