Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Рандом название файла

Ответить
Настройки темы
CMD/BAT - Рандом название файла

Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте! Подскажите пожалуйста код скрипта, чтобы он

1. брал в абсолютно произвольном порядке файл txt из z:\Work\cookies\*.txt и использовал имя файла во втором пункте

2. Копировал два файла (.ini и .conf) с именем файла из первого пункта из папок
z:\Work\testini\имяфайла.ini
z:\Work\testini\имяфайла.conf

Единственный момент, файлов больше 10 000 и скорость работы очень маленькая, возможно ли и эту проблему как-то решить?

Спасибо за любую помощь!

Отправлено: 14:25, 22-04-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата XXXp:
в абсолютно произвольном порядке… »
В этом случае забудьте про пакетные файлы. Либо WSH, либо PoSH.

Цитата XXXp:
2. Копировал два файла (.ini и .conf) с именем файла из первого пункта из папок
z:\Work\testini\имяфайла.ini
z:\Work\testini\имяфайла.conf
Единственный момент, файлов больше 10 000 »
Копировал куда? Причём здесь общее количество файлов?

Вы что-то не договариваете. Поясните.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:59, 22-04-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Раньше был такой код:
Цитата:
@echo off
setlocal

for /f "tokens=*" %%i in (' dir /b "z:\Work\ready-profiles\*.ini" ') do call:1 "%%i"
for /f "tokens=2 delims==" %%i in (' set ini_ ') do set "file=%%i"

copy /y "z:\Work\ready-profiles\%file%.ini" "Z:\Work\old\%file%.ini"
copy /y "z:\Work\ready-profiles\%file%.conf" "Z:\Work\old\%file%.conf"


goto:eof

:1
set "ini_%random%=%~n1"
Но тут берется файл с рандомным именем .ini , затем из этой же папки берется 2 файла с таким именем .ini и .conf и копируется в соответствующую папку
В данном случае скрипт работает довольно медленно и тормозит комп, потому что общее количество файлов 25 000 (по 12 500 .ini и 12 500 .conf)

Мне теперь нужно чтобы имя файла скрипт рандомно брал отсюда: z:\Work\cookies\*.txt
И уже из папки z:\Work\testini\ копировались одноименные файлы .ini и .conf

Беда в том что в папке cookies 12 500 файлов. Возможно опять будут проблемы со скоростью работы скрипта и подвисанием компьютера

Отправлено: 15:21, 22-04-2015 | #3


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


А если не bat, а wsh это можно реализовать?

Отправлено: 02:17, 23-04-2015 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


XXXp, можно. Напишите словами алгоритм работы, поскольку описание, приведённое в первом сообщении, не вполне соответствует коду из третьего сообщения.

Отправлено: 23:18, 23-04-2015 | #5


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот алгоритм:
1. Берем произвольный txt файл из папки c:\cookies, используем его имя (без .txt)
2. Копируем из папки z:\Work\ready-profiles\ файл с таким же именем, но с расширением .ini в папку c:\, однако теперь его полное имя и путь: c:\1.ini
3. Копируем из папки z:\Work\ready-profiles\ файл с таким же именем, но с расширением .conf в папку c:\profile, однако теперь его полное имя и путь: C:\profile\modify.conf

Вроде все.

Спасибо!

Отправлено: 00:12, 24-04-2015 | #6


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Что-то не хватает? Вроде все описал...

Отправлено: 16:13, 25-04-2015 | #7


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Все еще очень требуется помощь....

Отправлено: 00:53, 28-04-2015 | #8


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
:r
set rnd=%random:~0,5%
if %rnd% GTR 12500 (
GOTO :r
) ELSE (
set i=0
pushd c:\cookies
for /F %%F in ('dir /B /OD') do (
set /a i=i+1
if %%i == %rnd% (
copy /y Z:\Work\ready-profiles\%%~nF.ini C:\1.ini
copy /y Z:\Work\ready-profiles\%%~nF.conf C:\profile\modify.conf
GOTO :x
) ELSE (
exit /B 1)
:x
popd
exit /B 0
Крайне странная задача, но если надо... Даже не тестировал, но как-то так оно должно работать.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:46, 28-04-2015 | #9


Пользователь


Сообщения: 103
Благодарности: 0

Профиль | Отправить PM | Цитировать


Elven
Спасибо большое, но прошу проверить код, видимо где-то ошибка, потому что не работает. Пути проверил четырежды, с ними проблем нет, но скрипт сразу закрывается, без какого-либо выполнения

Отправлено: 00:46, 01-05-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Рандом название файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] При старте системы загружается браузер с рандом сайтом mateys Лечение систем от вредоносных программ 5 08-05-2014 23:23
Разное - Как узнать название файла с которым работает система Raman Microsoft Windows 2000/XP 14 24-06-2013 10:03
VBS/WSH/JS - [решено] Как вписать дату и время в название файла? navigator19 Скриптовые языки администрирования Windows 14 13-03-2011 10:30
[решено] Меняеца формат файла после смена название Twik Тест-форум 11 27-01-2011 00:24
Интерфейс - в название файла подчеркивание Glebush Microsoft Windows 2000/XP 0 25-05-2010 09:43




 
Переход