Компьютерный форум 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=316252)

gremlintv2 27-06-2016 22:02 2646072

Переименование файлов
 
Для меня задача показалась нетривиальной, поэтому я создал новую тему, если есть ответ попрошу ткнуть носом и удалить тему.
В чем заключаеться задача:
Есть такой скрипт:
Цитата:

for /f "delims=" %%i in ('dir /b /a:-d C:\папка') do ("c:\Program Files\PDFCreator\PDFCreator.exe" /PrintFile="C:\папка\%%i" && echo %%i)
Он прекрасно работает и конвертирует файлы в pdf, но есть проблема:
Если в имени файла встречаються незнакомые для cmd символы он их подменяет на "?". Например "Імя" -> "?мя"
Сответсвенно внутренняя команда такого имени файла не находит.
Собственно вопрос как в названии файлов заменить эти "?" на "_" ?
На форуме множество примеров как заменить определенный символ на другой, но как заменить "непонятный для cmd символ" я к сожалению не нашел =(.
Вот скрипт подставляющий в название xml файлов "12345" как я понял
Цитата:

@echo off
set nabor=12345
set folder=C:\1

for /f "delims=" %%A in ('dir /b /a-d "%folder%\*%nabor%*.xml"') do (
ren "%folder%\%%A" "%nabor%.xml"
)
pause

Iska 27-06-2016 23:13 2646082

Цитата:

Цитата gremlintv2
Если в имени файла встречаються незнакомые для cmd символы он их подменяет на "?". Например "Імя" -> "?мя" »

Символы знакомые, просто они отсутствуют в кодовой странице OEM/866, как я полагаю.

Цитата:

Цитата gremlintv2
Собственно вопрос как в названии файлов заменить эти "?" на "_" ? »

Вам не надо ничего заменять.

Можно вообще не использовать «dir», а просто перебирать файлы. Можно попробовать делать смену кодовой страницы (например, на 1251 или 65001) до, и вобрат — после основного тела пакетного файла. Можно перейти к использованию WSH/PowerShell, что будет и более правильным.

gremlintv2 27-06-2016 23:38 2646090

Спасибо нашел решение в соседней теме, и угадайте кто там помог с решением вопроса? =)
Вопрос закрыт нужно вначале файла изменить кодировку на:
chcp 1251
Большое спасибо Iska всегда выручаете своими ответами! =)

megaloman 27-06-2016 23:42 2646091

VBS-cкрипт
Код:

Papka = "C:\папка"

Prog = """c:\Program Files\PDFCreator\PDFCreator.exe"" /PrintFile="
' Prog = """C:\Windows\System32\notepad.exe"" "

Set FSO = CreateObject("Scripting.FileSystemObject")
Set FSH = CreateObject("WScript.Shell")

If FSO.FolderExists(Papka) Then
    Set Fol = FSO.GetFolder(Papka)
    Set Files = Fol.Files
    For Each File In Files
        Filename = """" + Papka + "\" + File.Name + """"
        ErrRun = FSH.Run(Prog + Filename, 10, True)
    Next
End If



Время: 22:17.

Время: 22:17.
© OSzone.net 2001-