CMD/BAT - Создание локального пользователя с данными из csv

Ответить
Аватара пользователя
HiFiN

CMD/BAT - Создание локального пользователя с данными из csv

Сообщение HiFiN »

Добрый день!



Есть csv файл с столбцами: Login, Password, FullName, Comment, Группа

Нужен скрипт, который будет создавать (обновлять данные если пользователь уже есть) беря данные из csv файла.

НО дополнительно к этому, в столбце Comment будет содержаться несколько кавычек, пример: ООО "Рога и Копыта" | Менеджер "проекта"
Аватара пользователя
mwz

Re: CMD/BAT - Создание локального пользователя с данными из csv

Сообщение mwz »

HiFiN, какой ваш вариант? По нему сможете получить подсказки и конкретные советы.
Аватара пользователя
mwz

Re: CMD/BAT - Создание локального пользователя с данными из csv

Сообщение mwz »

Добрый день!

Мой вариант не подходит, так как он отличается от "надо" и сырой.

Пока под каждого пользователя создается батник:

net user %user_name% %user_passw% /add /expires:never

net user %user_name% /fullname:%full_name% /comment:%comment%

net localgroup "%localgroup%" %user_name% /add



и в %comment% несколько кавычек не понимает (
Аватара пользователя
HiFiN

Re: CMD/BAT - Создание локального пользователя с данными из csv

Сообщение HiFiN »

Цитата HiFiN:



и в %comment% несколько кавычек не понимает (
CMD/BAT - Создание локального пользователя с данными из csv






Код:

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

>net.exe user Iska /comment:"\"Рога и Копыта\" Ltd."
Команда выполнена успешно.
>net user Iska
Имя пользователя                       Iska
Полное имя                             Iska
Комментарий                            "Рога и Копыта" Ltd.
Комментарий пользователя
Аватара пользователя
HiFiN

Re: CMD/BAT - Создание локального пользователя с данными из csv

Сообщение HiFiN »

Код:

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

net user "manager" /fullname:"Петр Васильев" /comment:"ООО \"Отдел \"Рога и Копыта\" | г. Санкт-Петербург | Менеджер"
"г." не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
Аватара пользователя
Iska

Re: CMD/BAT - Создание локального пользователя с данными из csv

Сообщение Iska »

HiFiN, с одного раза разве не понятно? Экранировать надо:



Код:

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

>net.exe user "Iska" /fullname:"Петр Васильев" /comment:"ООО \"Отдел \"Рога и Копыта\" ^| г. Санкт-Петербург ^| Менеджер"
Команда выполнена успешно.
>net.exe user "Iska"
Имя пользователя                       Iska
Полное имя                             Петр Васильев
Комментарий                            ООО "Отдел "Рога и Копыта" | г. Санкт-Петербург | Менеджер

Причём, я совершенно, категорически не советую использовать в комментарии такой символ, как «|». Потом сами же намучаетесь с обработкой.
Аватара пользователя
mwz

Re: CMD/BAT - Создание локального пользователя с данными из csv

Сообщение mwz »

Цитата Iska:



Экранировать надо
CMD/BAT - Создание локального пользователя с данными из csv




HiFiN, т.е. ставить перед двойными кавычками (и вообще перед теми символами текста, которые в общем случае являются служебными) экранирующий символ \ (падающий слэш), указывающий, что следующий за ним символ является не служебным, а составной частью текста.



Ну и, как верно отметил Iska, при использовании знака вертикальной черты (pipe) нахлебаетесь проблем.
Аватара пользователя
HiFiN

Re: CMD/BAT - Создание локального пользователя с данными из csv

Сообщение HiFiN »

Спасибо.

Я сразу не понял, что экранировать надо и «|».

Можете подробней описать, какие проблемы вызовет «|» в описание?



P.S. А что насчет bat, которые брал бы данные из csv?

Есть ли такая возможность?



Если нет, то можно ли заставить брать "полные" команды из excel?

Т.е. у меня в excel на одной странице будет логин, фио и описание, а на второй будет формула в нескольких строках: " ="net user """&A*&""" /fullname:"""&B*&""" /comment:"""&C*&"""" "

Можно ли заставить брать эти команды?
Аватара пользователя
Iska

Re: CMD/BAT - Создание локального пользователя с данными из csv

Сообщение Iska »

Цитата HiFiN:



Можете подробней описать, какие проблемы вызовет «|» в описание?
CMD/BAT - Создание локального пользователя с данными из csv




То, что символ конвейера | будет использован по своему прямому назначению — ровно так, как это произошло в Вашем коде.



Мы же речь всё ещё ведём про:


Цитата HiFiN:



Есть csv файл с столбцами: Login, Password, FullName, Comment, Группа

Нужен скрипт,
CMD/BAT - Создание локального пользователя с данными из csv




Ну, так вот попробуйте средствами пакетного файла прочитать и разобрать такой гипотетический файл на токены. Вообще, любые языки без ограничения границ строковых лексем в коде и/или с поддержкой escape-последовательностей (пакетные файлы, C/C++, PowerShell и прочие) имеют достаточные проблемы при работе со строками. И в первую очередь это проявляется при работе готовыми пакетными файлами/скриптами/утилитами с текстовыми файлами.




Цитата HiFiN:



P.S. А что насчет bat, которые брал бы данные из csv?

Есть ли такая возможность?
CMD/BAT - Создание локального пользователя с данными из csv




Есть.




Цитата HiFiN:



Если нет, то можно ли заставить брать "полные" команды из excel?
CMD/BAT - Создание локального пользователя с данными из csv




Нет. С Excel могут работать только языки, поддерживающие Automation или OLE DB. На крайний случай — DDE, хотя, по-моему, этого давно уже никто не делает.
Ответить

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