Yritän tehdä DOS-ohjelmaa joka kopioisi kaikki tiedostot, joiden tiedostonimi sisältää tietyn tekstin, esim. xcopy *tiedosto* c:\kansio\. Onko tuota mahdollista tehdä niin, että aina kun ohjelman ajaa, niin se kysyy mitä tekstiä etsiä? Vai pitääkö se aina käydä muuttamassa tekstieditorissa?
Lainaus, alkuperäisen viestin kirjoitti Käyttäjä: Yritän tehdä DOS-ohjelmaa joka kopioisi kaikki tiedostot, joiden tiedostonimi sisältää tietyn tekstin, esim. xcopy *tiedosto* c:\kansio\.
esim.
xcopy %1* %2 tallenna .bat -tiedostoon ja laita johonkin PATH-ympäristömuuttujan kansioon, esim. %WINDIR% (eli yleensä C:\Windows)
Käyttö komentoriviltä
omabatti kissa d:\kansio
-> batti ajaa komennon:
xcopy kissa* d:\kansio
Lainaus, alkuperäisen viestin kirjoitti Käyttäjä: Onko tuota mahdollista tehdä niin, että aina kun ohjelman ajaa, niin se kysyy mitä tekstiä etsiä? Vai pitääkö se aina käydä muuttamassa tekstieditorissa?
On, mutta menee hankalaksi.
esim. set kys1=
set /p kys1=Kirjoita tiedoston alku ja paina ENTER:
set kys2=
set /p kys2=Kirjoita kansio ja paina ENTER:
xcopy %kys1%* %kys2%
Simppeli valikko siihen komentojonotiedostoon:
:valikko1
echo Mihin rivi menee:
echo A. Alku (Oletus)
echo B. Keskellä
echo C. Lopussa
echo.
echo Q. Poistu/Peruuta
set valinta=
set /p valinta=Kirjoita valintaa vastaava merkki ja paina ENTER:
IF /I '%valinta%'=='a' GOTO alussa
IF /I '%valinta%'=='b' GOTO keskella
IF /I '%valinta%'=='c' GOTO lopussa
IF /I '%valinta%'=='q' GOTO ENDNOW
IF /I '%valinta%'=='' GOTO alussa
ECHO "%valinta%" ei ole sallittu valinta, yritä uudelleen
ECHO.
PAUSE
cls
goto valikko1
Eiköhän noilla pääse alkuun. Jos ei, niin kannattaa tosiaan lueskella vähän aiheesta.
EDIT: Oletan, että käytössä on normi winkkarin komentorivi/komentokehote. Eihän kukaan enää nykyään oikeata dossia käytä. Itselläni on useita pieniä batcheja sendto:ssa ja itse path-ympäristömuuttujassa, koska W7 ei tykkää mm. jos on liikaa tiedostoja yhdessä kansiossa. Komentokehote taas ei siitä välitä vaan tekee heti sen mitä käsketään sen enempää miettimättä asiaa.