Игнорировать русские буквы в строке
Всем привет! есть скрипт, который записывает ключ в .conf файл значение которого берется из переменных окружения и записи вида .test (имитирует доменное имя), этот скрипт записывает имя ПК в нижнем регистре, осталась одна проблема: если имя ПК содержит русские буквы - они записываются как точки или кавычки =)
Вопрос: как проигнорировать русские буквы в этом скрипте?
Код:
@echo off
set LowerCaseMacro=for /L %%n in (1 1 2) do if %%n==2 (for %%# in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do set "result=!result:%%#=%%#!") else setlocal enableDelayedExpansion ^& set result=
set "string=%COMPUTERNAME%_%RANDOM%"
%LowerCaseMacro%%string%
Find /I "certname=" "%USERPROFILE%\Desktop\file.conf" 1>nul||Echo certname=%result%.test>>"%USERPROFILE%\Desktop\file.conf"
|
DJ Mogarych |
07-09-2020 13:07 2933199 |
Вариант на Powershell, где русские буквы должны вставляться корректно
Код:
$file = "$env:USERPROFILE\Desktop\file.conf"
$value = ($env:COMPUTERNAME.ToLower().ToCharArray() -notmatch "[а-я]" -join '') + "_" + (get-random -Maximum 99999) + ".test"
(gc "$file") -replace "^certname=.*","certname=$value" |Set-Content "$file"
|
Наверное я не совсем правильно описал задачу, мне нужно именно проигнорировать русские буквы, powershell тоже подойдет, подойдет вообще все что можно обернуть в .exe
|
DJ Mogarych |
07-09-2020 20:30 2933271 |
Поправил, пробуйте.
|
Цитата:
Цитата Sick_013
Наверное я не совсем правильно описал задачу »
|
Вы описали не задачу, а способ неверного решения чего-то...
Опишите именно задачу, потому как абсолютно непонятно, зачем игнорировать какие-либо символы, в принципе...
Ничего невозможного, конечно, в этом нет, но хотелось бы понять для чего это требуется...
|
Игнорировать символы необходимо, так как ключ который добавляется этим скриптом это имя сертификата, в нём разрешены только латинские буквы в нижнем регистре, цифры и некоторые знаки: тире, нижнее подчеркивание, точка .. возможно еще какие то. Так как я в любом случае оберну этот скрипт в exe (для того чтобы добавить его в msi пакет как custom action) я решил написать его на python и скомпилировать с pyinstaller.
Вдруг кому пригодится:
Код:
import re
import socket
import random
import os
pcname = re.sub(r'[^a-zA-Z0-9"-_"]', '', (socket.gethostname()))
rand=str(random.randint(10001,99999))
certname = ("certname="+pcname.lower()+"_"+rand+".test")
pdata=os.getenv('PROGRAMDATA')
with open(pdata+"/path/to/dir/file.conf", "r+") as f:
line_found = any("certname=" in line for line in f)
if not line_found:
f.seek(0, os.SEEK_END)
f.write(certname)
Вопрос можно считать закрытым :up
|
Время: 15:24.
© OSzone.net 2001-