2016-09-23 4 views
-3

У меня есть файл text.txt, который заполняется данными, которые не разделены разделителем. Мне нужно добавить разделитель на основе столбцов в текстовом файле.Добавить разделитель в txt-файл из пакетного скрипта в Windows

В настоящее время данные выглядит

00067800000000000000000000N00006N 00000125463150050000012546315012 
00067800000000000000000000N00006N 00000125463150810000012546315098 

и мне нужно добавить разделитель, такие как «» в определенные столбцы в тексте, так это выходит похожий.

000678,0000000,000000,0000000,N,00006,N, ,00000,12546315005,00000,12546,315012 
000678,0000000,000000,0000000,N,00006,N, ,00000,12546315081,00000,12546,315098 

Я хотел бы создать пакетный файл, который проходит через и добавляет разделитель, в каждой колонке, мне нужно это для каждой строки в файле.

Возможно ли это?

Заранее благодарен!

+1

Добро пожаловать в Переполнение стека. Пройдите [2-минутный тур] (http://stackoverflow.com/tour). Кроме того, откройте [Справочный центр] (http://stackoverflow.com/help) и прочитайте хотя бы _Какие темы я могу спросить здесь? Тогда вы знаете, чего мы ожидаем от опрошенных: показывая нам код на , где вы решаете задачу самостоятельно и объясняете, почему вы не можете выполнить задачу. Извините, но Stack Overflow не является бесплатной службой написания кода. Однако вы можете начать здесь: [Переменные: извлечь часть переменной (подстрока)] (http://ss64.com/nt/syntax-substring.html). – JosefZ

+0

Связанный: [Generic Text Converter] (http://stackoverflow.com/a/35930679) – aschipfl

ответ

0
@ECHO OFF 
SETLOCAL 
SET "sourcedir=U:\sourcedir" 
SET "destdir=U:\destdir" 
SET "filename1=%sourcedir%\q39666479.txt" 
SET "outfile=%destdir%\outfile.txt" 

:: set delimiter and read column-sizes from supplied command-line 
SET "delimiter=," 
CALL :colsize %* 

(
FOR /f "usebackqdelims=" %%a IN ("%filename1%") DO (
SET "line=%%a" 
CALL :report 
) 
)>"%outfile%" 

GOTO :EOF 

:colsize 
SET "magic=" 
:: offset position 
SET /a size=0 
:colsizelp 
IF DEFINED magic (
SET "magic=%magic%%delimiter%`line:~%size%,%1`" 
) ELSE (
SET "magic=`line:~%size%,%1`" 
) 
SET /a size +=%1 
SHIFT 
IF "%1" neq "" GOTO colsizelp 
SETLOCAL enabledelayedexpansion 
SET "magic=!magic:`=%%!" 
endlocal&SET "magic=set "line=%magic%"" 
GOTO :eof 

:report 
CALL %magic% 
ECHO %line% 
GOTO :eof 

Вам потребуется изменить настройки sourcedir, filename1 и destdir в соответствии с вашими обстоятельствами.

Я использовал файл с именем , содержащий ваши данные для моего тестирования.

Производит файл, определенный в% выходной_файл%

Run как thisbatchname 6,7,6,7,1,5,1,1,5,11,5,5,6

для получения вышеуказанного результата. Каждое число - это просто ширина столбца.

По существу, постройте строку magic в соответствующих командах подстроки, нанизанных вместе, чтобы собрать выходную линию по мере необходимости. С каждой строкой из файла выполните команду magic и результат echo.

+0

Когда я запускаю это, я получаю пропавший операнд. комментарий в cmd. Выходной файл заполняется Echo выключен. –

+0

Невозможно рассказать без вашего предоставления дополнительной информации. Вы пытались перепечатать файл, или вы копировали и вставляли? Какое программное обеспечение вы использовали для создания командного файла? Иногда NOTEPAD пытается переформатировать файлы - попробуйте использовать Notepad + или Editplus. Изменение '@echo off' на' @echo on' будет воспроизводить список подпрограмм по мере его выполнения. Это может быть полезно при отладке - особенно проблема с отсутствием операнда. – Magoo

+0

Это то, что отображается в cmd. Я копирую и вставляю, и я использую Notepad ++ http://pastebin.com/fvUuf6ju Включение эха также заполнило файл output.txt с дополнительной информацией. http://pastebin.com/P2fNJFE9 –

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

  • Нет связанных вопросов^_^