CMD/BAT - [решено] Добавление числа после точки с условием

Ответить
 • Просмотры: 1
Аватара пользователя
Iska

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение Iska »

Кодировка та же? Пробуйте:


читать дальше »




Код:

Код: Выделить всё

function StrConvert($sSourceCharset, $sDestCharset) {
    begin {
        Set-Variable -Name adTypeText      -Option Constant -Value 2
        Set-Variable -Name adModeReadWrite -Option Constant -Value 3
        $oStream = New-Object -ComObject "ADODB.Stream"
    }
	process {
        $oStream.Type = $adTypeText
		$oStream.Mode = $adModeReadWrite
		$oStream.Open()
		$oStream.Charset = $sSourceCharset
		$oStream.WriteText($_)
		$oStream.Position = 0
		$oStream.Charset  = $sDestCharset
		$oStream.ReadText()
		$oStream.Close()
	}
}
$sPath = "E:\Песочница\0269"
Get-ChildItem -Path $sPath\*.* -Include *.txt |`
    ForEach-Object -Process {
        if((Get-Content -Path $_ | StrConvert "windows-1251" "cp866") -match "^Сумм:\d+(?:\.\d)?[^\d.]*$") {
            $_ | Move-Item -Destination "E:\Песочница\0270"
        }
    }
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение Georgio »

Код:

Код: Выделить всё

@ECHO OFF
(
 ECHO Сумм:[0-9][0-9]
 ECHO Сумм:[0-9][0-9]\.[0-9]
)>temp.txt
FOR %%I IN ("E:\Folder 1\*") DO (
 FINDSTR /R /E /G:temp.txt "%%~I">nul&&^
COPY "%%~I" "E:\Folder 2\">nul
)
DEL temp.txt
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение Georgio »

Iska, зта "сволочь", именуемая утилитой findstr.exe, никак не хочет напрямую воспринимать кириллицу. Ни смена кодовой страницы, ни перекодирование BAT-файла не приносят результата. Но, как видите, выход существует. Кстати, так и думал, что кто-нибудь спросит.
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение Georgio »

У меня — воспринимает:



Код:

Код: Выделить всё

E:\Песочница\0269>chcp
Текущая кодовая страница: 866
E:\Песочница\0269>findstr.exe /r /e /c:"Сумм:[0-9][0-9]" /c:"Сумм:[0-9][0-9]\.[0-9]" E:\Песочница\0269\*.txt
E:\Песочница\0269\112.txt:Сумм:30
E:\Песочница\0269\112.txt:Сумм:10.1

? Windows XP SP3.
Аватара пользователя
foma24

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение foma24 »

Цитата foma24:



нужно сделать тоже самое
CMD/BAT - [решено] Добавление числа после точки с условием




-- то есть оставить беэ изменения?



Если так, то сделаем.
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение Georgio »

Простите что не уточнил. Лучше всего было бы и то и то. Т.е. тоже один батник ищет файлы с такой строкой в папке, другой батник корректирует файл и сохраняет в другой файл. Извините что надоедаю со своей проблемой
Аватара пользователя
foma24

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение foma24 »

Простите что не уточнил. Лучше всего было бы и то и то. Т.е. тоже один батник ищет файлы с такой строкой в папке, другой батник корректирует файл и сохраняет в другой файл. Извините что надоедаю со своей проблемой
Аватара пользователя
foma24

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение foma24 »

Код:

Код: Выделить всё

@ECHO OFF
ECHO ^>temp.txt
FOR %%I IN ("E:\Folder 1\*") DO (
 FINDSTR /G:temp.txt "%%~I">nul&&^
COPY "%%~I" "E:\Folder 2\">nul
)
DEL temp.txt

Зтот BAT-файл будет искать в файлах строки, содержащие "" и, если таковые найдёт, то скопирует зтот файл в назначенную папку.



Второй BAT-файл, котрый будет обрабатывать такие файлы, дописываю.
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение Georgio »

Цитата Iska:



У меня — воспринимает
CMD/BAT - [решено] Добавление числа после точки с условием





Цитата Iska:



Windows XP SP3
CMD/BAT - [решено] Добавление числа после точки с условием








Вот скрипт, который я протестировал в своей Windows 7 Starter:







Код:

Код: Выделить всё

CHCP
findstr.exe /r /e /c:"Сумм:[0-9][0-9]" /c:"Сумм:[0-9][0-9]\.[0-9]" "E:\Folder 1\111.txt"
findstr.exe /r /e /c:"‘㬬:[0-9][0-9]" /c:"‘㬬:[0-9][0-9]\.[0-9]" "E:\Folder 1\111.txt"
findstr.exe /G:"E:\Folder 1\111.txt" "E:\Folder 1\111.txt"
CHCP 1251
findstr.exe /r /e /c:"Сумм:[0-9][0-9]" /c:"Сумм:[0-9][0-9]\.[0-9]" "E:\Folder 1\111.txt"
findstr.exe /r /e /c:"‘㬬:[0-9][0-9]" /c:"‘㬬:[0-9][0-9]\.[0-9]" "E:\Folder 1\111.txt"
findstr.exe /G:"E:\Folder 1\111.txt" "E:\Folder 1\111.txt"
PAUSE>nul



Последние строки для каждой кодировки просто показывают содержимое файла.







А вот результат выполнения:





2013-06-07_181350.jpg








Жаль, что в данный момент больше не на чем проверить, но, если мне не изменяет память, в тех версиях Windows XP и Windows Vista, на которых я работал, проблем с кириллицей для findstr.exe[/i] не было. Очевидно, в Windows 7 Starter другая редакция этой утилиты. Так что тот вариант скрипта универсален.
Аватара пользователя
Georgio

Re: CMD/BAT - [решено] Добавление числа после точки с условием

Сообщение Georgio »

Цитата Georgio:



А вот результат выполнения:
CMD/BAT - [решено] Добавление числа после точки с условием




Почему не текстом?




Цитата Georgio:



Вот скрипт…
CMD/BAT - [решено] Добавление числа после точки с условием




Кодировка его не OEM/866, а ANSI/1251, так?




Цитата Georgio:



в тех версиях Windows XP … на которых я работал, проблем с кириллицей для findstr.exe не было.
CMD/BAT - [решено] Добавление числа после точки с условием




Были
[выделение моё].
Ответить

Вернуться в «Скриптовые языки администрирования Windows»