2015-03-13 1 views
0

Это то, что у меня есть, основная проблема заключается в частичном тексте, конечный результат, который мне нужен, - это только первые 13 символов, поэтому любой ввод данных будет обледенением на торте.Пакетный файл; Echo to file производит частичный текст, а вывод на экран - полный текст

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 правильно; Тест - ОК-2-DELETE - xx.txt выход начинается в «\ Apps ......

Любая помощь будет принята с благодарностью, спасибо

+0

Прошу сделать что-то неправильно, код и данные отображаются некорректно, это мой первый пост на вашем сайте. –

+0

К hilight-коду либо отступ каждой строки 4 пробела, либо выберите и нажмите '{}' – Magoo

ответ

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 режима

и эта функция не может быть применен к метапеременной как %%A

Честно говоря, почему вы получил результат, который у вас был для меня загадкой.

Смежные вопросы