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

kopbetby 10-10-2016 12:19 2676613

Присвоить переменным значения имен файлов в папке
 
День добрый, помогите решить задачу, суть следующая: Имеется папка, где собраны сертификаты (*.p7b) всех пользователей организации (Иванов.p7b, Петров.p7b, Сидоров.p7b, Федоров.p7b,..). На данный момент, после увольнения (Иванов) и прихода нового сотрудника (Петров) приходится лезть в простенько созданный cmd-файл и руками менять присвоенные переменные, к примеру "set user20=Иванов.p7b" на "set user20=Петров.p7b".
Хотелось бы, что бы батник сам считал содержимое папки, где находятся сертификаты, и каждой переменной user1, user2, user3,.. присвоил соответствующее имя файла.
Пробовал все это сделать циклом For, но там у меня, либо переменной присваивается последний файл, либо просто выводится список файлов.

Iska 10-10-2016 13:17 2676631

Покажите код Вашего пакетного файла. Опишите словами, что он делает.

megaloman 10-10-2016 13:25 2676636

Тупо присвоить - пожалуйста. А зачем это нужно? Как с этим дальше поступать?
Код:

@Echo Off
cls
SetLocal EnableExtensions EnableDelayedExpansion

Set "InMask=Z:\Box_In\*.p7b"

Set /A Count=0

FOR /F "usebackq delims=" %%f IN (`Dir "%InMask%" /A:-D /B /O:N 2^>nul`) DO (
        Set /A Count+=1
        Set User!Count!=%%f
)

FOR /L %%i IN (1,1,%Count%) DO Echo !User%%i!

pause


kopbetby 10-10-2016 13:57 2676646

Цитата Iska:
Покажите код Вашего пакетного файла. Опишите словами, что он делает »
Скрытый текст
@Echo off

set user1=Иванов.p7b
set user2=Петров.p7b
set user3=Сидоров.p7b

:m1
Echo Выберите сертификат для установки:
Echo.
Echo 1 - %user1%
Echo 2 - %user2%
Echo 3 - %user3%
echo.
Set /p choice="Введите номер вашего сертификата, затем нажмите ВВОД: "
cls
call set x=%%user%choice%%%
del %temp%\*.p7b && xcopy ..\sert\gosuok\%x% %temp%
if errorlevel 1 cls && echo ВВЕДЕН НЕВЕРНЫЙ НОМЕР! && Echo. && goto m1
Echo.

Код самый примитивный, выводится список сертификатов, пользователь выбирает свой, вводит цифру, очищается папка Temp от p7b файлов и туда копируется выбранный пользователем сертификат.
Цитата megaloman:
Как с этим дальше поступать? »
Дальше, сторонним софтом идет импорт выбранного сертификата из папки Temp.
Спасибо Вам за код, вышло, как раз то, что я и хотел.

megaloman 10-10-2016 14:08 2676653

kopbetby, А не лучше ли связать имя файла сертификата с именем компьютера или логином пользователя
echo %ComputerName% %UserName%

kopbetby 10-10-2016 14:26 2676659

megaloman,
Спасибо за наводку, на счет %UserName% надо подумать. Однако и ручной выбор лишним не будет. :)


Время: 08:03.

Время: 08:03.
© OSzone.net 2001-