Показать полную графическую версию : [решено] Перенос произвольного файла из папки
Уважаемые гуру, помогите пожалуйста в создании скрипта.
Есть папка c:/profiles
В ней много файлов *.ini с различными названиями
Необходимо брать рандомный (произвольный) из них и копировать(с заменой) его на c:/ , при этом переименовывая в 1.ini
Предельно буду благодарен за любую помощь! Спасибо!
Foreigner
16-01-2012, 18:01
XXXp, Обязательно VBS/WSH/JS ?
На всякий случай батник:
@echo off
setlocal
for /f "tokens=*" %%i in (' dir /b "c:\profiles\*.ini" ') do call:1 "%%i"
for /f "tokens=2 delims==" %%i in (' set ini_ ') do set "file=%%i"
copy /y "c:\profiles\%file%" c:\1.ini
goto:eof
:1
set "ini_%random%=%~1"
Нет, не обязательно vbs/wsh/js
бат вполне подойдет, спасибо!
Только произвольность файла плохо работает, возможно её немного улучшить? У меня 14 файлов .ini, я запустил батник 4 раза, из них 3 раза он попал на один и тот же файл .ini
А потом ещё 3 раза с интервалом секунда в 7 для проверки и все три раза попал в один файл
El Sanchez
16-01-2012, 18:24
XXXp, а так?
@Echo Off
SetLocal
For %%A In ("C:\profiles\*.ini") Do Set /A Cnt+=1
Set /A Cnt=%RANDOM%*%cnt%/32768+1
For /F "Tokens=1* Delims=:" %%A In ('Dir /B /A-D "C:\profiles\*.ini"^|FindStr /n .') Do If %%A EQU %Cnt% Copy /Y "C:\profiles\%%B" "C:\1.ini"
Почему-то не работает...(
А нет, извиняюсь, работает, но рандомность вообще никакая, из 10 раз 9 попадает по одному файлу (при общем кол-ве 14)
Foreigner
16-01-2012, 18:46
я запустил батник 4 раза, из них 3 раза он попал на один и тот же файл .ini »
Я попробовал, и у меня все отлично:
http://storage6.static.itmages.ru/i/12/0116/s_1326725141_7300117_abc952cc02.jpeg (http://itmages.ru/image/view/392325/abc952cc)
Наверное, вы правы, перепроверил, стало намного лучше, видимо случайно в первый раз так совпало)
Извините, хотел ещё вопрос узнать, как доработать данный бат файл
Появилась необходимость, одновременно с данным файлом ini из папки profiles, копировать из папки c:\profiles в папку C:\Users\user\ ОДНОИМЕННЫЙ файл .conf, т.е. имя полностью идентичное файлу *.ini, только расширение файла .conf, при этом этот файл также нужно переменовать(с заменой) в user.conf
Подскажите пожалуйста, как это сделать, буду очень благодарен
Чтобы было понятнее, есть много файлов .ini и точно такое же кол-во файлов с аналогичными названиями .conf
необходимо, чтоб допустим файл 43252.ini был рандомно выбран из всех файлов из папки c:\profiles и скопирован с заменой на c:\, затем переименован в 1.ini
А одноименный файл 43252.conf был скопирован из этой же папки (c:\profiles), скопирован в папку c:\Users\user и переименован в user.conf
Спасибо заранее большое!
Foreigner
16-01-2012, 23:38
@echo off
setlocal
for /f "tokens=*" %%i in (' dir /b "c:\profiles\*.ini" ') do call:1 "%%i"
for /f "tokens=2 delims==" %%i in (' set ini_ ') do set "file=%%i"
copy /y "c:\profiles\%file%.ini" "c:\1.ini"
copy /y "c:\profiles\%file%.conf" "c:\users\user\user.conf"
goto:eof
:1
set "ini_%random%=%~n1"
Спасибо большое! работает как нужно!
Ещё вопрос появился! Все здорово работает, только теперь нужен новый скриптик, который бы удалял
все файлы .ini из папки c:\profiles, размер которых меньше 1 кб, и вместе с ними удалял идентичные по названию файлы .conf
Т.е. файлы имеют одно название, разное расширение, необходимо удалять *.ini меньше 1 кб размером и заодно .conf с таким же названием. Спасибо!
Foreigner
28-01-2012, 07:53
XXXp,
@echo off
pushd "c:\profiles"
for %%i in (*.ini) do if %%~zi lss 1024 (del "%%i" "%%~ni.conf")
popd
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.