Vieras

Apuja simppelin .bat tiedoston luontiin?

18 viestiä aiheessa

Tarvitsisi luoda Windowsiin .bat -tiedosto joka tekee seuraavaa:

 

Siirtää kaikki kansiossa olevat esim. WOAI* -alkuiset alikansiot tiedostoineen toiseen alikansioon nimeltä ABC. Sama pitäisi toistaa useammille kansioryhmille, esim WOAI*, TXT* jne..

 

Toinen .bat tiedosto, joka käytännössä tekee saman tempun toisinpäin, hakee kaikki siirretyt kansiot tuolta ABC -alikansiosta ja siirtää ne takaisin alkuperäiseen paikkaan.

 

Uskon että moneltakin täällä löytyy nuo simppelit komennot selkäytimestä. Multa ei löydy  :-\

 

 

 

 

Jaa viesti


Link to post
Jaa muulla sivustolla

Jeps, XCOPY on komento, joka kannattaa opetella. Sillä pystyy tekemään yllättävän mutkikkaita juttuja. Tietenkin sitten, jos nämä tiedostot sijaitsevat alkujaan eri kansioissa, ei niiden palauttaminen alkuperäiseen paikkaansa ole enää yksinkertainen .bat. Siinä tarvitaan jo oikeaa ohjelmointia. Jos sen sijaan voit tehdä ABC:n alle oman kansion kullekin kansiolle, joista näitä tiedostoja löytyy, sitten onnistuu taas helpolla komentotiedostolla. Siirto on yhtä kuin kopiointi ja poisto. Move-komento on varsin rajallinen.

Jaa viesti


Link to post
Jaa muulla sivustolla

Kiitoksia viittauksista oikeaan suuntaan. Valitettavasti vaan kun minulla ei ole DOS-komentojen käyttämistä syntakseista edes alkeistietoja, olisin toivonut ihan konkreettisia esimerkkejä. Vaikka olenkin oppimishenkinen, kyseessä on "one off" kokeilu, joten yritän mennä siitä missä aita on matalin  :)

 

Nyt tuo xcopy -kokeiluni katkeaa heti alkuunsa koska en ymmärrä miten sen saa siirtämään kokonaisia kansioita.

 

Esim. xcopy "F:\Program Files\Microsoft Games\Flight Simulator 9\Aircraft\WoA*" "F:\Program Files\Microsoft Games\Flight Simulator 9\Aircraft\abc" /S

 

ajettuna hakemistosta jossa nuo "WoA" -alkuiset kansiot sijaitsevat, ei tee mitään.

 

Jaa viesti


Link to post
Jaa muulla sivustolla

Komennoissa on itsessään hyvät ohjeet. Kirjoitapa "XCOPY /?"

 

 

Sulla on syntaksivirhe tuossa. Voit käskeä kopioimaan \WoA tai \WoA\*.* mutta et \WoA*

Jaa viesti


Link to post
Jaa muulla sivustolla

Onko mahdollista XCOPY:a käyttäen kopioida (siirtää) koko hakemistorakenne, eikä vain pelkkiä tiedostoja kaikista lähdekansioista?

Jaa viesti


Link to post
Jaa muulla sivustolla

Ei tästä nyt tule mitään. Kertonee jotain siitä miten paljon ymmärrän tämän yksinkertaisen asian päälle.

 

Olen onnistunut ainoastaan kopioimaan yksittäisen kansion SISÄLLÖN toiseen kansioon. En millään onnistu kopioimaan koko alkuperäistä kansiota sinällään toiseen paikkaan.

 

Toiseki, jos luotava komentorivitiedosto ei tue jokerimerkkejä, miten sitten voin kopioida KAIKKI kansiossa olevat esim. woa -alkuiset kansiot toiseen kansioon? woa-alkuisia kansioita on siis useita, kaikki päättyvät hiukan eri merkkeihin.

 

 

Jaa viesti


Link to post
Jaa muulla sivustolla

Ei tästä nyt tule mitään. Kertonee jotain siitä miten paljon ymmärrän tämän yksinkertaisen asian päälle.

 

Olen onnistunut ainoastaan kopioimaan yksittäisen kansion SISÄLLÖN toiseen kansioon. En millään onnistu kopioimaan koko alkuperäistä kansiota sinällään toiseen paikkaan.

 

Toiseki, jos luotava komentorivitiedosto ei tue jokerimerkkejä, miten sitten voin kopioida KAIKKI kansiossa olevat esim. woa -alkuiset kansiot toiseen kansioon? woa-alkuisia kansioita on siis useita, kaikki päättyvät hiukan eri merkkeihin.

 

 

 

Jotakuinkin noin homma toimisi seuraavalla batchillä:

 

CD %1

FOR /D %%G IN (WOAI*) DO XCOPY /E  /I %%G\*.* %2\%%G

 

jos tuon nimi olisi siirto.bat, niin komento olisi esim:

 

siirto.bat /xyz /abc

 

kopiointi vastakkaiseen suuntaan jätetään helpohkoksi harjoitustehtäväksi. Pitikö tuossa sitten olla WOAI tai WOA on parhaiten sinulla tiedossa. Jos WOAI:n lisäksi on muita alihakemistotyyppejä, voit kopioida ao. riviä n kertaa tai laitaa eri hakemistot vain välimerkillä erotettuina (WOAI* TXT* KOE*), kumpi nyt on helpompi tai kätevämpi

 

t. hannu

 

EDIT: multihakemistolisäys

Jaa viesti


Link to post
Jaa muulla sivustolla

jos tuon nimi olisi siirto.bat, niin komento olisi esim:

 

siirto.bat /xyz /abc

 

 

Kiitokset oikeasta suunnasta! Paljon on vielä kuitenkin matkaa..

 

Epäselväksi jäi tuo lainattu osuus. Missä hakemistossa tuo komento tulisi suorittaa? /xyz viitannee lähdehakemistoon, vai kuinka? Lopullinen päämäärä olisi siis .bat -tiedosto, joka voidaan ajaa (erillisen ohjelman kautta) automaattisesti simun käynnistyessä. Tarkoitus ei siis olisi toteuttaa siirto-operaatiota  joka kerta dospromptin kautta.

 

Minkälainen muutos tulisi tehdä, jotta batchi myös deletoisi kansiot alkuperäisestä paikasta, ts. siirtäisi kansiot?

 

Jaa viesti


Link to post
Jaa muulla sivustolla

Kiitokset oikeasta suunnasta! Paljon on vielä kuitenkin matkaa..

 

Epäselväksi jäi tuo lainattu osuus. Missä hakemistossa tuo komento tulisi suorittaa? /xyz viitannee lähdehakemistoon, vai kuinka? Lopullinen päämäärä olisi siis .bat -tiedosto, joka voidaan ajaa (erillisen ohjelman kautta) automaattisesti simun käynnistyessä. Tarkoitus ei siis olisi toteuttaa siirto-operaatiota  joka kerta dospromptin kautta.

 

Minkälainen muutos tulisi tehdä, jotta batchi myös deletoisi kansiot alkuperäisestä paikasta, ts. siirtäisi kansiot?

 

 

Ihan ekaksi sori, kun yleensä väännän linuxia, niin tulee väkisin tuo / \:n tilalle, eli komento piti olla siirto \xyz \abc ;)

 

Periaatteessa tuossa komennon nimessä voisi olla täsmällinen polku itse bat-tiedostoon, jolloin sen paikalla ei periaatteessa ole mitään väliä: c:\batit\siirto.bat \xyz \abc. Tuohan ensimmäiseksi siirtyy ensimmäisen parametrin hakemistoon (tarkkaan ottaen komento pitäisi antaa sillä öevyllä, jossa se kopioitaav aineisto on, jotta se toimii oikein) ja tekee siellä niiden alihakemistojen kopiomisen xcopy:llä.

 

Jos korvaat %1 ja %2 oikeilla poluilla suoraan batchissa, et tarvitse parametreja. Tosin samaan pääset sillä, että teet toisen batchin, jossa on komentona tuo yleiskäyttöisen batchin kutsu, jolloin se on ehkä hiukan monikäyttöisempi.

 

Jos haluat tehdä siirron kopioimisen sijaan, se onnistuu kaiketi helpoiten siten, että tee vielä yhden batchin, joka ensin tekee xcopyn ja sitten poistaa alkuperäiset kahdella eri rivillä, jolloin koko hommelista tulisi seuraavanlainen:

 

Siirto.bat:

XMOVE.BAT \xyz \abc

 

Xmove.bat:

CD %1

FOR /D %%G IN (WOAI*) DO move_and_destroy %%G %2

 

move_and_destroy.bat:

XCOPY /E  /I %1\*.* %2\%1

RD /Q /S %1

 

Huomaa, että Siirto.batissa xmove.bat-kohdalla pitäisi olla täydellinen polku batch-tiedostoon, samoin DO:n perässä FOR-rivillä (siis move_and_destroy.bat-kohdassa)

 

Ainakin itse testasin tämän toimivaksi härdelliksi, toivottavsti sinullakin toimii. Kokeile kuitenkin ensin jollain sopivalla dummy-aineistolla ;)

 

t. hannu

Jaa viesti


Link to post
Jaa muulla sivustolla

t. hannu

 

Kiitokset Hannu vaivannäöstäsi!

 

Mainitaan nyt vielä mihin tätä suunnittelen. Ellei se ole käynyt selväksi, niin simuun tietysti  :)  Olen noteerannut että FS9:n käynnistymisen nopeus on suoraan verrannollinen Aircraft-kansiossa olevien koneiden määrään. Ero on TODELLA merkittävä. Minuutit muuttuvat sekunneiksi.

 

Minulla tulee välillä tarve testata jotain lisäosaa, jolloin simua tulee käynnisteltyä ja sammulteltua tiheään. Olen tällöin siirtänyt kaikki AI-koneiden kansiot tilapäiskansioon latauksen nopeuttamiseksi. Normaalisti olen tehnyt tämän ihan normaalissa käyttöliittymässä drag-drop systeemillä. Ei se nyt niin vaivalloista ole, mutta ajattelisin jos hiukan automatisoisin hommaa.

 

Yksi juttu mikä nyt hiukan hämmentää, on se että tiedostojen siirtäminen näillä skripteillä on monin verroin hitaampaa kuin Windowsin omalla drag-drop systeemillä. Jopa niin paljon hitaampaa että hyöty on aika olematon. Kokeilin siirtää noin viidesosan siitä tiedostomäärästä mitä normaalisti, ja aikaa kului varmaankin viisi kertaa enemmän - minuuttitolkulla!

 

Mistähän moinen nopeusero voi johtua? Onko drag-drop jotenkin niin paljon optimoidumpi? Vaikea uskoa.

 

Jaa viesti


Link to post
Jaa muulla sivustolla

Jos teet siirron siirtona, kuten tapatuu oletuksena vedettäessä Windowsin tiedostonhallinnassa saman levyosion sisällä, mitään ei siirry levyllä, vaan tiedostoihin vaan muutetaan niiden kansiopolku. Kun joudut kopioimaan ja poistamaan, tämä tapahtuu levyoperaationa. DOS:in MOVE-komento tekisi tuon siirtona, mutta on kovasti rajoittunut. Varmaan löytyy komentoriviltä ohjattavia nopeita ja monipuolisia siirtoapuohjelmia netistä, kantsii etsiä.

 

Jaa muuten, justiinhan viime päivityksissä tuli Windowsiin jakoon uusi Powershell. Siitä saattaa löytyä parempia työkaluja, en ole vielä tutustunut. On varmaan jo tavallisessakin Windows Updatessa valinnaisena.

 

Juu hei, asenna ja käynnistä Powershell ja kirjoita "get-help move-item -detailed". Luulenpa että tuolla sujuu.

 

Enemmän aiheesta: http://www.microsoft.com/technet/scriptcenter/topics/winpsh/manual/default.mspx

Jaa viesti


Link to post
Jaa muulla sivustolla

Kiitokset Hannu vaivannäöstäsi!

 

Mainitaan nyt vielä mihin tätä suunnittelen. Ellei se ole käynyt selväksi, niin simuun tietysti  :)  Olen noteerannut että FS9:n käynnistymisen nopeus on suoraan verrannollinen Aircraft-kansiossa olevien koneiden määrään. Ero on TODELLA merkittävä. Minuutit muuttuvat sekunneiksi.

Juuri tuosta syystä AI-koneita ei pidä asentaa simun Aircraft-kansioon.  Mulla on simun pääkansiossa luotuna WOA-kansio johon tuuppaan AI-kaman.

Jaa viesti


Link to post
Jaa muulla sivustolla

Juuri tuosta syystä AI-koneita ei pidä asentaa simun Aircraft-kansioon.  Mulla on simun pääkansiossa luotuna WOA-kansio johon tuuppaan AI-kaman.

 

Hetkinen.. miten simu ne sieltä osaa hakea? Minä olen aina ollut siinä ymmärryksessä että FS9 tajuaa koneiden (AI tai mikä hyvänsä) olevan olemassa ainoastaan jos ne ovat Aircraft-pääkansiossa omina kansioinaan jotka sitten sisältävät tietyt standardinmukaiset tiedostot ja alikansiot?

 

Jaa viesti


Link to post
Jaa muulla sivustolla

Simu osaa hakea ne kun laitat WOAI:n installeriin sen kansiopolun ennen asennusten aloittamista.  Se vielä vahvistaa, että haluatko lisätä tämän polun simun scenery.cfg:hen.  Sitten asentelet paketit normaalisti, ja kaikki toimii.

 

 

edit: Eli ensin luot sen WOA (tai mitä nimeä haluat käyttää) kansion esim simun pääkansioon.  Sitten käynnistät WOAI-installerin, ja siinä vaiheessa haet sillä osoitteeksi äsken luomasi kansion.  Se osoite tulee näkyviin installeriin, ja se pysyy muistissa seuraavia asennuksia varten koko ajan, kun vain valitset simun version (FS9/FSX).

Jaa viesti


Link to post
Jaa muulla sivustolla

Minulle ei vielä tuostakaan selityksestä aukea miten se toimii. Millä tavalla scenery.cfg:n sisältö vaikuttaa asennettuihin lentokoneisiin? Siinähän on kysymys ainoastaan asennetuista maisemista.

Jaa viesti


Link to post
Jaa muulla sivustolla

Luo uusi käyttäjätunnus tai kirjaudu sisään

Sinun täytyy olla jäsen osallistuaksesi keskusteluun

Luo käyttäjätili

Rekisteröi uusi käyttäjätili helposti ja nopeasti!


Luo uusi käyttäjätili

Kirjaudu sisään

Sinulla on jo käyttäjätili?


Kirjaudu sisään