Показать полную графическую версию : Рандом название файла
Здравствуйте! Подскажите пожалуйста код скрипта, чтобы он
1. брал в абсолютно произвольном порядке файл txt из z:\Work\cookies\*.txt и использовал имя файла во втором пункте
2. Копировал два файла (.ini и .conf) с именем файла из первого пункта из папок
z:\Work\testini\имяфайла.ini
z:\Work\testini\имяфайла.conf
Единственный момент, файлов больше 10 000 и скорость работы очень маленькая, возможно ли и эту проблему как-то решить?
Спасибо за любую помощь!
в абсолютно произвольном порядке… »
В этом случае забудьте про пакетные файлы. Либо WSH, либо PoSH.
2. Копировал два файла (.ini и .conf) с именем файла из первого пункта из папок
z:\Work\testini\имяфайла.ini
z:\Work\testini\имяфайла.conf
Единственный момент, файлов больше 10 000 »
Копировал куда? Причём здесь общее количество файлов?
Вы что-то не договариваете. Поясните.
Раньше был такой код:
@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 файлов. Возможно опять будут проблемы со скоростью работы скрипта и подвисанием компьютера
А если не bat, а wsh это можно реализовать?
XXXp, можно. Напишите словами алгоритм работы, поскольку описание, приведённое в первом сообщении, не вполне соответствует коду из третьего сообщения.
Вот алгоритм:
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
Вроде все.
Спасибо!
Что-то не хватает? Вроде все описал...
Все еще очень требуется помощь....
@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
Крайне странная задача, но если надо... Даже не тестировал, но как-то так оно должно работать.
Elven
Спасибо большое, но прошу проверить код, видимо где-то ошибка, потому что не работает. Пути проверил четырежды, с ними проблем нет, но скрипт сразу закрывается, без какого-либо выполнения
leo.pine.58@fb
02-05-2015, 17:34
У него скобки не бьют, писал совсем наспех.
Непонятно также зачем нужно обрезать %random% таким образом.
Сорри за критику
Сорри за критику »
Конструктивная критика зачастую полезна.
Рандом обрезал потому что не помнил сколько цифр он выдает, а со скобками действительно косяк нарисовался, в самом конце одну не выделил когда копировал.
@echo off
:r
set rnd=%random%
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 Z:\Work\ready-profiles\%%~nF.ini C:\1.ini
copy Z:\Work\ready-profiles\%%~nF.conf C:\profile\modify.conf
GOTO :x
) ELSE (
exit /b 1)
:x
popd
exit /B 0))
Спасибо, но все равно не работает(
не работает( »
Это архиполное описание того что не работает.
попробуй теперь скопировать.
Ну я батник запускаю, он сразу закрывается, ничего не происходит. Все пути копировал из рабочего батника, с ними ошибки быть не может, проверял много раз
Ну я батник запускаю, он сразу закрывается, ничего не происходит. »
Откройте окно командной строки, сделайте текущим потребный каталог (если нужно), затем запустите оттуда пакетный файл на исполнение.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.