Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Имя файла из его содержимого (http://forum.oszone.net/showthread.php?t=282516)

Sinus 21-05-2014 18:03 2354055

Имя файла из его содержимого
 
Есть батник копирующий файл с текстом из одной папки в другую, содержимое: copy c:\one\ps.txt c:\two\*.*
В тексте файла есть строка: P;ПП-05254543 в которой первая часть всегда статична (P;ПП-) а вторая, состоящая из цифр меняется.
Как модернизировать вышеприведенный бат файл что бы копируемому файлу присваивалось имя из числовой части строки (P;ПП-05254543), в данном случае (05254543)

Надеюсь понятно изложил. Жду совета =)

Iska 21-05-2014 19:22 2354089

Упакуйте несколько образцов таких файлов в архив, и приложите его к сообщению.

megaloman 21-05-2014 20:39 2354105

Код:

@Echo Off

chcp 1251

Set "InFile=Z:\One\траляля.txt"

SetLocal EnableExtensions EnableDelayedExpansion

FOR /F "usebackq tokens=*  delims=" %%i in ("%InFile%") do (
        Set "s=%%i"
        Set "s=!s:P;ПП-=!"

        If not %%i==!s! (
                Set "s=!s: =!"
                copy "%InFile%" "z:\two\!s!.txt"
                GoTo :Eof
        )
)

Батник должен быть написан в одной кодировке с Вашим ps.txt
Если ps.txt в DOS (866) кодировке, то строку
chcp 1251
надо удалить
Для отладки у меня ваш c:\one\ps.txt записан как Z:\One\траляля.txt
А лучше
Цитата:

Упакуйте несколько образцов таких файлов в архив, и приложите его к сообщению.

Sinus 22-05-2014 11:02 2354260

Вложений: 1
Приложил два файла для примера.


megaloman,
Ваш скрипт работает. Забыл указать что в конце строки есть символ ";" он не нужен.

megaloman 22-05-2014 13:14 2354330

Цитата:

Забыл указать что в конце строки есть символ ";" он не нужен.
Перед строкой с Copy добавьте строку
Set "s=!s:;=!"
Пока Ваши файлы не смотрел

Sinus 22-05-2014 16:23 2354418

Как сделать что бы путь к исходному файлу не жестко задавать а добавить его как параметр %1 при запуске батника ?

Попробовал так, не получилось =)

Код:

@Echo Off


Set "InFile=%1"

SetLocal EnableExtensions EnableDelayedExpansion

FOR /F "usebackq tokens=*  delims=" %%i in ("%InFile%") do (
        Set "s=%%i"
        Set "s=!s:P;ПП-=!"

        If not %%i==!s! (
                Set "s=!s:;=!"
                copy "%InFile%" "z:\two\!s!.txt"
                GoTo :Eof
        )
)


firstarey 26-05-2014 08:00 2355786

по идее так, но у меня Ваши батники не отрабатывают даже в исходном виде, может конечно с кодировками что не то
(просто перетаскиваете файл на батник)

Код:

@Echo Off
chcp 1251

if "%~f1"=="" pause
set
"InFile=%~f1"

echo %InFile%


SetLocal EnableExtensions EnableDelayedExpansion

FOR /F "usebackq tokens=*  delims=" %%i in ("%InFile%") do (
        Set "s=%%i"
        Set "s=!s:P;ПП-=!"

        If not %%i==!s! (
                Set "s=!s:;=!"
                copy "%InFile%" "z:\two\!s!.txt"
                GoTo :Eof
        )
)



Время: 20:44.

Время: 20:44.
© OSzone.net 2001-