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

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

Ответить
Настройки темы
CMD/BAT - [решено] поиск файла по маске и запись этого имени в переменную

Новый участник


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

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


Изменения
Автор: ___dima___
Дата: 29-07-2010
Доброго дня!
Задача такая:
нужен батник в котором происходит поиск файла по маске и запись его имени в переменную для последующей обработки

Код: Выделить весь код
if exist c:\sk*
как-то записать имя найденного в переменную
что-то типа этого , но только батником

Отправлено: 16:29, 29-07-2010

 

Старожил


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

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


Если путь фиксирован и поиск по подкаталогам не требуется, то уберите ключ /s из команды dir:

Код: Выделить весь код
for /f "Tokens=1* Delims=" %%F in ('dir /b c:\sk*') do set File=%%F
echo %File%

-------
Как сказало Дерево Дровосеку: "я - пень".


Отправлено: 17:13, 29-07-2010 | #2



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

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


Ветеран


Contributor


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

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


Я бы предложил такое вот решение:
Код: Выделить весь код
@Echo Off

Set Maska="c:\sk*"

FOR %%i IN (%Maska%) DO Call :Obrabotka "%%i"

GoTo :EOF 

:Obrabotka
Echo %1
Если несколько файлов подпадают под указанную маску, то при вызове подпрограммы Obrabotka можно обработать необходимым образом каждый файл. Полное имя файла (с кавычками) хранится в переданном параметре %1.
Естественно, кавычки в подпрограмме можно убрать (вызывайте for /? и смотрите как), только зачем это нужно?
Если очень хочется, можно написать
Set FileName=%1

Если Вы уверены, что файл один, то, конечно, можно написать коротенько
Код: Выделить весь код
FOR %%i IN ("c:\sk*") DO Set FileName="%%i"
Echo %FileName%
А вот решение, если файлы надо искать в поддиректориях
Код: Выделить весь код
@Echo Off

Set FDir="С:\"
Set Maska="sk*"

FOR /R %FDir% %%i IN (%Maska%) DO Call :Obrabotka "%%i"
GoTo :EOF 

:Obrabotka
Echo %1

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 30-07-2010 в 21:06. Причина: Дополнил

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:37, 30-07-2010 | #3


Новый участник


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

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


Спасибо, ребят!
здорово помогли. воспользовался способом который попроще (как раз то что надо)
Код: Выделить весь код
FOR %%i IN ("c:\sk*") DO Set FileName="%%i"
Echo %FileName%

Последний раз редактировалось ___dima___, 09-08-2010 в 14:20.


Отправлено: 09:33, 09-08-2010 | #4


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


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

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


мне нужно тоже самое Но что бы путь к файлам не выводился
мне подошёл первый вариант от megaloman
командой >> files.txt я вывожу список файлов но там имеются пути к файлам...без них бы.

Отправлено: 00:44, 11-07-2015 | #5


Ветеран


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

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


Цитата DonQuixote:
командой >> files.txt я вывожу список файлов но там имеются пути к файлам...без них бы. »


Код: Выделить весь код
@echo off

set "Maska=c:\sk*"

for %%i in ("%Maska%") do >>"files.txt" echo %%~nxi

exit/b
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:05, 11-07-2015 | #6


Ветеран


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

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


А вообще-то то же самое сделает команда "DIR" (более того, даже будут учтены скрытые файлы):


Код: Выделить весь код
@echo off

set "Maska=c:\sk*"

>"files.txt" dir/a-d/b "%Maska%"

exit/b

.

Последний раз редактировалось Georgio, 13-07-2015 в 18:56.

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:57, 12-07-2015 | #7


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


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

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


Georgio, тоже верно)
я пока копался в поисках кое как нашёл свой способ,до вашего ещё.(переделал под себя, он искал файлы 2015 года,имеющие дату изминения между 7 и 12 месяцем)
Код: Выделить весь код
for /f "tokens=1-3*" %%a in ('dir "%BINDIR%\%maskF%" /a-d /-c /t:c ^|findstr /RC:"^[0-9][0-9]\.0[0-9].*" /C:"^[0-9][0-9]\.1[0-2].*"') do echo %%d>>settingsSTART\SETgameF.ini
возник ещё вопрос,тоже по списку файлов.
Код: Выделить весь код
Setlocal EnableDelayedExpansion
FOR /F "delims=" %%i IN ('DIR /A-D /B /S .\libraries\*.jar') DO (SET sLib="%%i";!sLib!)
Setlocal DisableDelayedExpansion
ищет все файлы в папке создовая список в переменной %sLib% в одну строчку такова вида
Код: Выделить весь код
"g:\1111111\22222\libraries\file1.jar";"g:\1111111\22222\libraries\file2.jar";"g:\1111111\22222\libraries\22222\file3.jar";"g:\1111111\22222\libraries\file.jar";"g:\.... и т. д.
но мне мешают полные пути опять...можно сделать вот так?
Код: Выделить весь код
.\\libraries\io\netty\netty-all\file.jar\file.jar;.\\libraries2\file.jar;.\\libraries2\commons-file.jar;
только не знаю можно ли и нужно ли "" вернуть..
и начинается со .\\librarie
наверно запутал)
то есть мне нужно что бы
g:\папка\папка\папка\папка\libraries\папка\папка\file1.jar
слева весь путь до папки libraries был убран
\libraries\папка\папка\file1.jar и в начале стояло .\\
.\\libraries\папка\папка\file1.jar

Последний раз редактировалось DonQuixote, 15-07-2015 в 15:42.


Отправлено: 14:44, 15-07-2015 | #8


Ветеран


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

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


ребят, подскажите скрипт, для поиска всех медиа-файлов на C:\\Users
система - win10. из телефонов скидывали всякую хрень в компьютеры.
фото, видео, аудио

Отправлено: 17:24, 10-06-2017 | #9


Ветеран


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

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


krec,
запасайтесь куревом
Код: Выделить весь код
@echo off
set "d_in=C:\%Username%"
:: set "d_in=%Userprofile%"
set "d_out=C:\Papka_out"
set "n1=Audio"& set "r1=2sf,2sflib,3ga,5xb,5xe,5xs,669,6cm,8cm,8svx,a2b,a2i,a2m,a2p,a2t,a52,aa,aa3,aac,aax,abc,abm,ac3,acd,acd-bak,acd-zip,acm,acp,act,adg,adts,adv,afc,agm,agr,ahx,aif,aifc,aiff,aimppl,ais,akp,al,alac,alaw,all,als,amf,amr,ams,amxd,amz,aob,ape,apf,apl,aria,ariax,ase,at3,atrac,au,aud,aup,avastsounds,awb,ay,b4s,band,bap,bcs,bdd,bidule,bmml,bonk,box,brstm,bun,bwf,bwg,bww,c01,caf,caff,cda,cdda,cdlx,cdo,cdr,cel,cfa,cgrp,cidb,ckb,ckf,cmf,copy,cpr,csh,cts,cwb,cwp,cwt,d00,d01,dcf,dcm,dct,ddt,df2,dfc,dig,djr,dls,dm,dmf,dmsa,dmse,dra,drg,ds2,dsf,dsm,dsp,dss,dtm,dts,dtshd,dvf,dw,dwa,dwd,ear,efa,efe,efk,efq,efs,efv,emd,emp,emx,emy,eop,esps,evr,expressionmap,f2r,f32,f3r,f4a,f64,far,fda,fff,flac,flp,fls,frg,fsm,ftmx,fzf,g721,g723,g726,gbs,gig,gm,gp5,gpbank,gpk,groove,gsm,h0,h3b,h3e,h4b,h4e,h5b,h5e,h5s,hbb,hbs,hma,hmi,hsb,iaa,ics,iff,igp,imf,imp,ins,isma,it,iti,itls,its,jam,jo,jo-7z,k25,k26,kar,kfn,kin,kit,kmp,koz,kpl,krz,ksc,ksd,ksf,ksm,kt2,kt3,ktp,l,la,lof,lqt,lvp,lwv,m1a,m3u,m3u8,m4a,m4b,m4p,m4r,ma1,mbr,mdl,med,mgv,mid,midi,mini2sf,minincsf,minipsf,minipsf2,miniusf,mka,mlp,mmf,mmm,mmpz,mo3,mod,mogg,mp_,mp1,mp2,mp3,mpa,mpc,mpd,mpdp,mpga,mpu,mscx,msv,mt2,mt9,mte,mti,mtm,mtp,mts,mu3,mus,musa,musx,mux,muz,mws,mx3,mx4,mx5,mx5template,mxmf,myr,mzp,nap,nkb,nkc,nki,nkm,nks,nkx,nml,nmsv,nra,nrt,nsa,nsf,nst,ntn,nvf,nwc,obw,odm,ofr,oga,ogg,okt,oma,omf,omg,omx,opus,orc,ots,pac,pat,pbf,pca,pcast,pcg,pcm,peak,pek,pho,phy,pjunoxl,pk,pkf,pla,pls,plst,pna,pno,ppc,ppcx,prg,psf1,psf2,psm,psy,ptcop,ptf,ptm,pts,pvc,q1,q2,qcp,r,r1m,ra,ram,raw,rax,rbs,rcy,record,rex,rfl,rgrp,rip,rmf,rmi,rmj,rmm,rmx,rng,rns,rol,rsf,rsn,rso,rta,rti,rtm,rts,rvx,rx2,s3i,s3m,s3z,saf,sam,sap,sb,sbg,sbi,sbk,sc2,scs11,sd,sd2,sd2f,sdat,sdii,sds,sdx,seg,ses,sesx,sf,sf2,sfap0,sfk,sfl,sfpack,sgp,shn,sib,sid,slx,smf,smp,smpx,snd,sng,sns,snsf,sou,sph,sppack,spx,sseq,ssnd,stm,stx,sty,svd,svx,sw,swa,swav,sxt,syh,syn,syw,syx,tak,td0,tfmx,thx,tm2,tm8,tmc,toc,trak,tsp,tta,tun,txw,u,u8,ub,ulaw,ult,ulw,uni,usf,usflib,ust,uw,uwf,v2m,vag,val,vap,vc3,vdj,vgm,vlc,vmd,vmf,vmo,voc,voi,vox,voxal,vpl,vpm,vpw,vqf,vrf,vsq,vyf,w01,w64,wav,wave,wax,wem,wfb,wfd,wfp,wma,wow,wpk,wproj,wrk,wus,wut,wv,wvc,wve,wwu,wyz,xbmml,xfs,xi,xm,xmf,xmi,xmz,xp,xpf,xrns,xsb,xsp,xspf,xt,xwb,ym,yookoo,zab,zpa,zvd,zvr"
set "n2=Video"& set "r2=264,3g2,3gp,3gp2,3gpp,3gpp2,3mm,3p2,60d,787,890,aaf,aec,aep,aepx,aet,aetx,ajp,ale,am,amc,amv,amx,anim,aqt,arcut,arf,asf,asx,avb,avchd,avd,avi,avp,avs,avv,awlive,axm,bdm,bdmv,bik,bin,bix,bnp,box,bs4,bsf,bu,bvr,byu,camproj,camrec,camv,ced,cine,cip,clpi,cmmp,cmmtpl,cvc,cx3,d2v,d3v,dash,dat,dav,dce,dck,ddat,dif,dir,divx,dlx,dmb,dmsd,dmsd3d,dmsm,dmsm3d,dmss,dmx,dnc,dpa,dpg,dream,dv,dv4,dv-avi,dvr,dvr-ms,dvx,dxr,dzm,dzp,dzt,edl,evo,eye,f4f,f4p,f4v,fbr,fbz,flc,flh,fli,flv,flx,ftc,gfp,gl,gom,grasp,gts,gvi,gvp,h264,hdmov,hdv,hkm,ifo,imovieproject,ircp,irf,ismc,ismv,iva,ivf,ivr,ivs,izz,izzy,jmv,jss,jts,jtv,k3g,kmv,lrec,lrv,lsf,lsx,lvix,m15,m1pg,m1v,m21,m2a,m2t,m2ts,m2v,m4e,m4u,m4v,m75,mani,meta,mgv,mj2,mjp,mjpg,mk3d,mkv,mmv,mnv,mob,mod,moff,moi,moov,mov,movie,mp21,mp2v,mp4,mp4v,mpe,mpeg,mpeg1,mpeg4,mpf,mpg,mpg2,mpgindex,mpl,mpls,mpsub,mpv,mpv2,mqv,msdvd,msh,mswmm,mts,mtv,mvb,mvc,mvd,mve,mvex,mvp,mvy,mxf,mxv,mys,ncor,nsv,nut,nuv,nvc,ogm,ogv,ogx,orv,otrkey,par,pds,pgi,photoshow,piv,pjs,playlist,plproj,pmf,pmv,ppj,prel,pro,pro4dvd,pro5dvd,proqc,prproj,prtl,prx,psh,pssd,pva,pvr,pxv,qt,qtch,qtindex,qtl,qtm,qtz,r3d,rdb,rec,rm,rmd,rmp,rms,rmv,rmvb,roq,rp,rsx,rts,rum,rv,rvl,sbk,sbt,scm,scn,sdc,sdv,sedprj,sfvidcap,siv,smi,smil,smk,sml,smv,snagproj,spl,srt,ssm,str,stx,svi,swf,swi,swt,tda3mt,tdx,tid,tivo,tix,tod,tp,tp0,tpd,tpr,trp,ts,ttxt,tvs,usm,vbc,vc1,vcpf,vcr,vcv,vdo,vdr,veg,vem,vep,vf,vft,vfw,vfz,vgz,vid,video,viewlet,viv,vivo,vix,vlab,vob,vp3,vp6,vp7,vpj,vro,vs4,vse,vsp,w32,wcp,webm,wm,wmd,wmmp,wmv,wmx,wp3,wtv,wvx,xej,xel,xesc,xfl,xlmv,xmv,xvid,y4m,yog,yuv,zeg,zm1,zm2,zm3,zmv"
set "n3=Photo"& set "r3=001,3d,3d4,3df,8pbs,ac5,ac6,acr,adc,ais,amu,arr,awd,blz,bmc,bmf,btf,cag,cam,ce,cil,cpt,crw,csf,cut,dcm,ddb,ddrw,dng,emz,exif,fac,face,fbm,fh9,fhd,fits,fs,gks,gry,hcx,hf,hip,hr,hrf,ic1,ic3,ica,icb,iff,ilbm,imj,ink,ithmb,ivr,jbf,jfi,jif,jiff,jpc,jpf,jpw,kfx,kodak,mag,max,mcs,mgf,mgs,mic,mip,mix,mma,mng,mrb,mrw,msk,msp,nav,ncd,nef,neo,nff,nif,ntc,ntf,odc,odg,odi,odif,opf,otb,ovw,p65,pac,pat,pct,pd,pdg,pfr,pi4,pi5,pi6,pic,picnc,pictclipping,ply,pm3,pnt,pov,psb,psf,pspimage,pwp,pws,qif,qti,qtif,raf,raw,ray,rds,rif,sar,scg,scp,scu,sda,sdr,sff,sgi,shg,si,sid,sig,sim,smp,spc,spiff,spu,sr,srf,std,sun,suniff,sup,taac,tddd,thm,tn1,tn2,tn3,tny,trif,u,urt,v,vic,viff,vis,vna,vss,vst,web,wgs,wi,wic,wmp,wnk,x3d,xbm,xcf,xif,xof,xpm,xsi,xwd,xws,ydl,yuv,zgm"

cmd/v/c "for /l %%a in (1,1,3) do @for %%b in (!r%%~a!) do @for /f "delims=" %%c in ('dir /a-d /b /s "%d_in%\*.%%~b" 2^>nul') do @(if not exist "%d_out%\!n%%~a!" md "%d_out%\!n%%~a!")& (>nul copy "%%~c" "%d_out%\!n%%~a!")"
exit
рабочий код можно и так записать (понятнее), но у меня так чуть дольше
Код: Выделить весь код
for /l %%m in (1,1,3) do call :# "%%r%%m%%" "%%n%%m%%"
pause& exit

:#
 for %%a in (%~1) do for /f "delims=" %%A in ('dir /a-d/b/s "%d_in%\*.%%a" 2^>nul') do (
  if not exist "%d_out%\%~2" md "%d_out%\%~2"
  >nul copy "%%A" "%d_out%\%~2"
 )
exit /b
а вообще не барское это дело не для cmd это задача - медленно, надо или Powershell или vbs/js, гораздо шустрее будет.
хотя, если поиск будет исключительно одного уровня ('dir /a-d/b "%d_in%\*.%%a" - без ключа /s, непосредственно в папке, не ниже) и расширений напишете сами штук с десяток, то и cmd быстро сработает.

Последний раз редактировалось alpap, 11-06-2017 в 11:38.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:12, 11-06-2017 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Ошибка - Каракули в реестре "Синтаксическая ошибка в имени файла,имени папки или метке тома" permas Microsoft Windows 2000/XP 2 20-02-2010 19:30
CMD/BAT - [решено] Чтение строки из файла в переменную Николя Скриптовые языки администрирования Windows 42 17-01-2010 19:42
CMD/BAT - [решено] Поиск по отрицательной маске *.* / not= dll semiono Скриптовые языки администрирования Windows 8 21-07-2009 15:20
Интернет - [решено] Ошибка: 623: Системе не удалось найти запись телефонной книги для этого подключения. Котяра Microsoft Windows 2000/XP 1 21-02-2008 21:40
[решено] Поиск DNS имени по IP адрессу MPru Программирование и базы данных 4 17-04-2007 10:48




 
Переход