Показать полную графическую версию : Создание локального пользователя с данными из csv
Добрый день!
Есть csv файл с столбцами: Login, Password, FullName, Comment, Группа
Нужен скрипт, который будет создавать (обновлять данные если пользователь уже есть) беря данные из csv файла.
НО дополнительно к этому, в столбце Comment будет содержаться несколько кавычек, пример: ООО "Рога и Копыта" | Менеджер "проекта"
HiFiN, какой ваш вариант? По нему сможете получить подсказки и конкретные советы.
Добрый день!
Мой вариант не подходит, так как он отличается от "надо" и сырой.
Пока под каждого пользователя создается батник:
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% несколько кавычек не понимает (
и в %comment% несколько кавычек не понимает ( »
>net.exe user Iska /comment:"\"Рога и Копыта\" Ltd."
Команда выполнена успешно.
>net user Iska
Имя пользователя Iska
Полное имя Iska
Комментарий "Рога и Копыта" Ltd.
Комментарий пользователя
net user "manager" /fullname:"Петр Васильев" /comment:"ООО \"Отдел \"Рога и Копыта\" | г. Санкт-Петербург | Менеджер"
"г." не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
HiFiN, с одного раза разве не понятно? Экранировать надо:
>net.exe user "Iska" /fullname:"Петр Васильев" /comment:"ООО \"Отдел \"Рога и Копыта\" ^| г. Санкт-Петербург ^| Менеджер"
Команда выполнена успешно.
>net.exe user "Iska"
Имя пользователя Iska
Полное имя Петр Васильев
Комментарий ООО "Отдел "Рога и Копыта" | г. Санкт-Петербург | Менеджер
Причём, я совершенно, категорически не советую использовать в комментарии такой символ, как «|». Потом сами же намучаетесь с обработкой.
Экранировать надо »
HiFiN, т.е. ставить перед двойными кавычками (и вообще перед теми символами текста, которые в общем случае являются служебными) экранирующий символ \ (падающий слэш), указывающий, что следующий за ним символ является не служебным, а составной частью текста.
Ну и, как верно отметил Iska, при использовании знака вертикальной черты (pipe) нахлебаетесь проблем.
Спасибо.
Я сразу не понял, что экранировать надо и «|».
Можете подробней описать, какие проблемы вызовет «|» в описание?
P.S. А что насчет bat, которые брал бы данные из csv?
Есть ли такая возможность?
Если нет, то можно ли заставить брать "полные" команды из excel?
Т.е. у меня в excel на одной странице будет логин, фио и описание, а на второй будет формула в нескольких строках: " ="net user """&A*&""" /fullname:"""&B*&""" /comment:"""&C*&"""" "
Можно ли заставить брать эти команды?
Можете подробней описать, какие проблемы вызовет «|» в описание? »
То, что символ конвейера | будет использован по своему прямому назначению — ровно так, как это произошло в Вашем коде.
Мы же речь всё ещё ведём про:
Есть csv файл с столбцами: Login, Password, FullName, Comment, Группа
Нужен скрипт, »
Ну, так вот попробуйте средствами пакетного файла прочитать и разобрать такой гипотетический файл на токены. Вообще, любые языки без ограничения границ строковых лексем в коде и/или с поддержкой escape-последовательностей (пакетные файлы, C/C++, PowerShell и прочие) имеют достаточные проблемы при работе со строками. И в первую очередь это проявляется при работе готовыми пакетными файлами/скриптами/утилитами с текстовыми файлами.
P.S. А что насчет bat, которые брал бы данные из csv?
Есть ли такая возможность? »
Есть.
Если нет, то можно ли заставить брать "полные" команды из excel? »
Нет. С Excel могут работать только языки, поддерживающие Automation или OLE DB. На крайний случай — DDE, хотя, по-моему, этого давно уже никто не делает.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.