2015-03-13 24 views
0

這就是我所知道的,主要問題是部分文本,我需要的最終結果只是第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  

設定的無功輸出是正確的; 測試 - OK-2-DELETE - !xx.txt開始輸出「\ APPS ......

任何幫助將不勝感激,謝謝

+0

請問我做錯了什麼,代碼和數據顯示不正確,這是我在您的網站上的第一篇文章。 – 2015-03-13 19:01:43

+0

要高亮顯示代碼,可以縮進每行4個空格或選擇並推送'{}' – Magoo 2015-03-13 19:32:02

回答

0

我不完全知道爲什麼它的發生,但你的問題的原因是!是你們等有大約%% a。去除它們,它會工作。

echo %%A>> Test--OK-2-DELETE--xx.txt 
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個字符」,其中包括第一個字符串後面的空格。來自輸入的期望輸出的明確例子將是有用的。

這是,輸出可能已經得出幾種方法之一,但明確地使用批量的substringing功能

子串語法

%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。如果省略,子是「從起始位置到結束」
  • %可能是!delayedexpansion模式

這個功能不能被應用到metavariable像%%A

坦率地說,你爲什麼得到你的輸出對我來說是一個謎。

相關問題