2015-09-16 2 views
-2

Я пытаюсь написать пакетный скрипт для автоматического чтения PDF-файлов с использованием имен PDF в папке и генерации из них 3-х входных файлов.Пакетный файл для чтения входов из другого текстового файла

Имена PDF файлов в папках будут в ниже форматах:

1-2345-600B FLAT 3MM MK7 MINE.pdf 
7-8910-100C FLAT 3MM MK7 MINE.pdf 

Я хотел бы создать один из входных файлов, как этот формат:

Part ID|Rev ID|Part Name|Dataset|datasetname|type|ref 

Пример:

1-2345-600|B|FLAT 3MM MK7 MINE|/Foldername/PDF/1-2345-600B FLAT 3MM MK7 MINE.pdf|1-2345-600B FLAT 3MM MK7 MINE|PDF|PDF_Reference 

7-8910-100|C|FLAT 3MM MK7 MINE|/Foldername/PDF/7-8910-100C FLAT 3MM MK7 MINE.pdf|7-8910-100C FLAT 3MM MK7 MINE.pdf|PDF|PDF_Reference 

Здесь я думал, чтобы получить имена файлов PDF отдельно в текстовом файле, а затем проанализировать его для вывода i n выше в другом пакетном файле. Но, когда вы видите, что это может быть сложно с учетом сложностей при создании строки с указанными выше различными параметрами синтаксического анализа из имени файла PDF. Пожалуйста, помогите в более простом способе кодирования этого. Являюсь новым в мире кодирования командного файла.

+3

Добро пожаловать в SO. К сожалению, мы не являемся сервисом написания кода. Однако вы можете начать с 'for/R \ \ Foldername"% G in ("* mine.pdf") сделать @for/F "tokens = 1 *"% g in ("% ~ nG") сделать @echo% g^|% h^|% ~ pnxG^|% ~ nxG' для первого взгляда. Я бы рекомендовал следующее требуемое чтение: http://ss64.com/nt/ и http://ss64.com/nt/syntax.html – JosefZ

+1

ваши выходные примеры являются непоследовательными: должно быть '.pdf' в пятом поле или нет? Пожалуйста, отредактируйте свой вопрос. – Stephan

ответ

0

Это не так сложно. Но я думаю, для новичков трудно выработать правильный синтаксис.

Первый шаг - анализ входных данных. К счастью, похоже, все они имеют одинаковый формат и ту же длину для партитуры. Таким образом, вы можете разделиться на «PartRevision» и «отдохнуть».

Поскольку Редакция - это только последняя буква PartRevision, ее легко разбить. Остальное «только» выбирает соответствующие переменные модификаторы.

Как symbil труба (|) имеет специальную функцию в пакетном режиме, вы должны избавиться от них с кареткой (^)

@echo off 
setlocal enabledelayedexpansion 

for /f "tokens=1,* delims= " %%a in ('dir /s /b *.pdf') do (
    set part=%%~na 
    echo !part:~0,-1!^|!part:~-1!^|%%~nb^|%%~dpna %%b^|%%~na %%~nb^|PDF^|PDF_Reference 
) 

см for /?, set /?

для !variable! -Syntax, см. here

+0

Большое спасибо! Это помогло мне .. –

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