Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Windows Новый топик    Ответить
 Создание директории со случайным именем для временных файлов  [new]
otistarda
Member

Откуда: Новосибирск
Сообщений: 334
Мне нужно в процессе запуска DOS-программы в Y2K создавать директорию со случайным именем для временных файлов. Присвоения SET HOME=%RANDOM% в batch-файле при запуке по ярлыку (*.pif) не происходит.
*.pif необходим ввиду использования в программе зарезервированных клавиш.
Подскажите, как можно штатными средствами присвоить случайное значение переменной. Есть ли что-то подобное %RANDOM% в Win9x?
6 окт 06, 08:39    [3228517]     Ответить | Цитировать Сообщить модератору
 Re: Создание директории со случайным именем для временных файлов  [new]
rrrrrrrrrr
Member

Откуда: РТ
Сообщений: 6366
otistarda
Мне нужно в процессе запуска DOS-программы в Y2K создавать директорию со случайным именем для временных файлов. Присвоения SET HOME=%RANDOM% в batch-файле при запуке по ярлыку (*.pif) не происходит.
*.pif необходим ввиду использования в программе зарезервированных клавиш.
Подскажите, как можно штатными средствами присвоить случайное значение переменной. Есть ли что-то подобное %RANDOM% в Win9x?
Именно случайный набор нужен? А время + дата не подойдут?
6 окт 06, 09:24    [3228646]     Ответить | Цитировать Сообщить модератору
 Re: Создание директории со случайным именем для временных файлов  [new]
otistarda
Member

Откуда: Новосибирск
Сообщений: 334
Мысль интересная. А как присвоить переменной, например, время.
6 окт 06, 10:06    [3228832]     Ответить | Цитировать Сообщить модератору
 Re: Создание директории со случайным именем для временных файлов  [new]
Андрей Спильный
Member

Откуда: Ukraine, Crimea
Сообщений: 534
otistarda
Мне нужно в процессе запуска DOS-программы в Y2K создавать директорию со случайным именем для временных файлов. Присвоения SET HOME=%RANDOM% в batch-файле при запуке по ярлыку (*.pif) не происходит.
*.pif необходим ввиду использования в программе зарезервированных клавиш.
Подскажите, как можно штатными средствами присвоить случайное значение переменной. Есть ли что-то подобное %RANDOM% в Win9x?


нет, Random есть только в 2k и выше, если "Command Extensions are enabled"

проблему можно решить например так


{Delphi code}
program Project1;

{$APPTYPE CONSOLE}

uses
  Classes,
  SysUtils,
  Windows;

var
  path,dir:string;
  guid:TGUID;
  c:Integer;

begin
  path:=ParamStr(1);
  c:=0;
  dir:='';
  repeat
    CreateGUID(guid);
    dir:=GUIDToString(guid);
    Inc(c);
  until DirectoryExists(path+dir) or (c>100);
  Writeln(dir);
End.

использовать в .bat так
Set TempDir=0
@FOR /F "tokens=*" %%i in ('project1 %temp%\') do (@Set TempDir=%%i)
echo %TempDir%
6 окт 06, 10:09    [3228847]     Ответить | Цитировать Сообщить модератору
 Re: Создание директории со случайным именем для временных файлов  [new]
--null--
Guest
есть сильное сомнение, что такой код отработает в pif для DOS программ.
проще уж тогда прогу написать, которая будет просто создавать каталог со случайным именем
6 окт 06, 10:42    [3228993]     Ответить | Цитировать Сообщить модератору
 Re: Создание директории со случайным именем для временных файлов  [new]
Андрей Спильный
Member

Откуда: Ukraine, Crimea
Сообщений: 534
--null--
есть сильное сомнение, что такой код отработает в pif для DOS программ.

тогда просто проверьте ;)
--null--

проще уж тогда прогу написать, которая будет просто создавать каталог со случайным именем

а что по вашему написано выше? что мешает заменить Writeln на CreateDir?
6 окт 06, 10:56    [3229075]     Ответить | Цитировать Сообщить модератору
 Re: Создание директории со случайным именем для временных файлов  [new]
--null--
Guest
дело все в том, что в command.com в W2k даже %RANDOM% будет создаваться.
Ибо это видимо не совсем COMMAND.COM :-) Во всяком случае он как-то эту переменную берет, ибо она ведь генерируется cmd.exe (по документации Microsoft)
А вот в pif-ах не будет ни %RANDOM%, ни приведенных Вами конструкций.
Просто проверьте (c)
Создайте pif c autoexec.nt и в нем попробуйте это исполнить.
Я так понял, автору вопроса именно это надо.

автор
что мешает заменить Writeln на CreateDir?

согласен
6 окт 06, 11:13    [3229187]     Ответить | Цитировать Сообщить модератору
 Re: Создание директории со случайным именем для временных файлов  [new]
rrrrrrrrrr
Member

Откуда: РТ
Сообщений: 6366
Похоже, ДОС не позволяет присвоить переменной другую переменную или результат функции...
А с параметрами не устроит? Скажем, так: один батник (который привязан к pif'у) получает значение %RANDOM% и передает его как параметр второму батнику, который и делает всю работу. При этом у него (второго) всегда будет глобальный параметр %1, правда, константой.
6 окт 06, 11:39    [3229367]     Ответить | Цитировать Сообщить модератору
 Re: Создание директории со случайным именем для временных файлов  [new]
rrrrrrrrrr
Member

Откуда: РТ
Сообщений: 6366
Пример:
батник №1
c:\test.bat %TEMP%\%RANDOM%\
запустит батник c:\test.bat с параметром, в моем случае, C:\TEMP\25947\

батник №2 (c:\test.bat)
mkdir %1
dir c:\ >> %1\dir_c.txt


Результат: создан файл C:\TEMP\25947\dir_c.txt
6 окт 06, 11:43    [3229403]     Ответить | Цитировать Сообщить модератору
 Re: Создание директории со случайным именем для временных файлов  [new]
rrrrrrrrrr
Member

Откуда: РТ
Сообщений: 6366
... или совсем цинично:
C:\test.bat %TEMP%\%RANDOM%\ в pif'е,
а в тексте батника адресоваться к %1
6 окт 06, 11:48    [3229438]     Ответить | Цитировать Сообщить модератору
Все форумы / Windows Ответить