Windowsin komentoliittymäongelma (Command Line)

Mun pitäis saada automatisoitua esim. batch-tiedostojen avulla seuraavanlainen toiminto (vähän lisätietoa samalla):

*Ulkoisella kiintolevyllä, joka on Y-asemassa ( Y: ), on useita kansioita...
*Kuhunkin näistä kansioista pitäisi päästä sisälle ja ajaa eräs toiminto
*Itse en jaksa kirjoittaa satoja kertoja komentoliittymässä "cd [kansion nimi]" ja ajaa tarvittavat ohjelmat ja sitten taas "cd .." ja cd [seuraavan kansion nimi]" jne..

...joten tarvitsisin komentoliittymää varten jonkun "scriptin" batch-tiedostolle, jolla kone osaisi mennä aakkosjärjestyksessä kansioiden sisällä ja ajaa toiminnon (MultiPar)...

Tuo joka kansion sisällä ajettava toiminto on MultiPar, jota käytän näin:

"C:\Program Files (x86)\MultiPar\par2j.exe" c /sn1000 /rr10 /rf1 "Parchive 2.0 Redundancy.par2" *.*

c = create
sn = source blockien määrä
rr = redundanssin määrä (prosenteissa)
rf = luotavien parchive-tiedostojen määrä

Tuo luo siis 10% korjausdatan joka kansion sisällölle siltä varalta jos tiedostoja vahingoittuu tms. Ongelmana on vain tuo automatisointi komentoliittymässä ajettavalle batch-tiedostolle, jotta osaisi käydä joka kansion läpi. Mistään en löytänyt vielä kunnon neuvoja tähän hätään.
21326
Äänestä

Muut lukivat myös

Vastaukset 21

Vanhimmat

For-silmukalla tietenkin. Katso komennot
For /?
Cd /?
Dir /?
Niin saat lisätietoa.

Äänestä

Kiitokset, nyt pääsin ainakin enemmän jäljille. Yritin command prompt-aiheisien apusivustojen pohjalta kaikkeni, mutta ei onnistunut... Muun muassa näitä kokeilin: http://ss64.com/nt/for_d.html

Aina vain sain jonkun virheilmoituksen.

Pliis, jeesatkaa koheloa! Yritin monta eri yhdistelmää onnistumatta missäkään niistä.

Äänestä

Kuulemma uusimmissa Windowseissa on tehokkaampi komentotulkki. Ellei se taivu tehtävään niin miten olisi Bash? Sellainenhan on olemassa kuin Win-Bash.

Niin ja sitten on Perl ja Python. Mikäli jompi kumpi on tuttu kieli.

Äänestä

Tehdään kädestä pitäen, koska muuten epäonnistun. Jos olisit asemassani, niin miten ajaisit Windowsin komentoliittymällä itse tuon, mitä aloitusviestissäni hain?

Tämän kanssa siis:

"C:\Program Files (x86)\MultiPar\par2j.exe" c /sn1000 /rr10 /rf1 "Parchive 2.0 Redundancy.par2" *.*

Äänestä

Windowsilla en osaisi mutta Linuxilla tekisin jotenkin näin
find . -type f -execdir par2 c -b1000 -r10 -n1 '{}' \;

Äänestä
  • Oisko sittenkin niin, ettei tuo ole edes mahdollista Windowsin komentoliittymässä?

    Äänestä

  • Sranje stroj kirjoitti:

    Oisko sittenkin niin, ettei tuo ole edes mahdollista Windowsin komentoliittymässä?

    ehkä vaan siinä trollailee keskenään linkkuran erinomaisutta joka asiassa, mikään siinä linkkurassa ei kuitenkaan toimi, mykkänä pysyvän E153 mokkulan arvoituskin vissiin vielä urpoilla ratkaisematta !

    Äänestä

  • Sranje stroj kirjoitti:

    Oisko sittenkin niin, ettei tuo ole edes mahdollista Windowsin komentoliittymässä?

    Tuota kun katselee niin eipä siinä taida olla käytetty mitään Bash komentotulkin erityisominaisuutta. Pelkästään find komentoa. Tietääkseni GNU find on saatavilla myös Windowsille. Sitä en tiedä poikkeaako sen syntaksi mitenkään.

    Näillä palstoilla vanhentuneeksi halveksittu komentorivi on on yhä tehokkain työkalu isoja massoja käsiteltäessä. Tosin se tekee sitten tehokkaasti vahinkoakin ellei ole varovainen.

    Komentorivissä ei myöskään ole kysymys mistään rakettitieteestä. Tosin usein joutuu katsomaan ohjesivua. Ei kaikkea voi muistaa. Eli nyt puretaan tuo kryptiseltä näyttävä rivi kaikille komentorivikammoisille.

    find
    Käytetään find nimistä ohjelmaa.

    .
    Tälle paikalle tulee hakemisto, mistä etsiminen aloitetaan ja sitten siirrytään sen alihakemistoihin. Piste tarkoittaa että etsintä aloitetaan nykyisestä hakemistosta.

    -type f
    Etsitään normaalit tiedostot. Ei siis esimerkiksi hakemistoja tai linkkejä.

    -execdir
    Kun haettu tiedosto löytyy niin siirrytään löytynen hakemistoon ja suoritetaan siellä -execdir ja seuraavan puolipisteen väliset komennot.

    par2
    Suoritettava ohjelma

    c -b1000 -n1
    Par2 ohjelmalle annettavia säätövipuja.

    '{}'
    Aaltosulut ovat aina se löytyneen tiedoston nimi. Hipsut ympärillä taas ovat merkkinä siitä että kyseessä on yksi tiedosto. Muuten par2 saattaa hämääntyä mikäli tiedoston nimessä on vaikkapa välilyönti.

    \;
    Puolipiste kertoo find-ohjelmalle että kaikki komennot on suoritettu ja voidaan aloittaa seuraavan tiedoston etsintä. Kenoviiva sen edessä on merkki komentotulkille ettei se yritä puolipistettä tulkita vaan siirtää sen find ohjelmalle sellaisenaan.

    Eihän ollutkaan mitenkään vaikeaa?

    Äänestä

  • 2 linkku-urpoa kirjoitti:

    ehkä vaan siinä trollailee keskenään linkkuran erinomaisutta joka asiassa, mikään siinä linkkurassa ei kuitenkaan toimi, mykkänä pysyvän E153 mokkulan arvoituskin vissiin vielä urpoilla ratkaisematta !

    Lapset hiljaa kun miehet puhuvat aikuisten asioista.

    Äänestä

  • nnGp:)S= kirjoitti:

    Tuota kun katselee niin eipä siinä taida olla käytetty mitään Bash komentotulkin erityisominaisuutta. Pelkästään find komentoa. Tietääkseni GNU find on saatavilla myös Windowsille. Sitä en tiedä poikkeaako sen syntaksi mitenkään.

    Näillä palstoilla vanhentuneeksi halveksittu komentorivi on on yhä tehokkain työkalu isoja massoja käsiteltäessä. Tosin se tekee sitten tehokkaasti vahinkoakin ellei ole varovainen.

    Komentorivissä ei myöskään ole kysymys mistään rakettitieteestä. Tosin usein joutuu katsomaan ohjesivua. Ei kaikkea voi muistaa. Eli nyt puretaan tuo kryptiseltä näyttävä rivi kaikille komentorivikammoisille.

    find
    Käytetään find nimistä ohjelmaa.

    .
    Tälle paikalle tulee hakemisto, mistä etsiminen aloitetaan ja sitten siirrytään sen alihakemistoihin. Piste tarkoittaa että etsintä aloitetaan nykyisestä hakemistosta.

    -type f
    Etsitään normaalit tiedostot. Ei siis esimerkiksi hakemistoja tai linkkejä.

    -execdir
    Kun haettu tiedosto löytyy niin siirrytään löytynen hakemistoon ja suoritetaan siellä -execdir ja seuraavan puolipisteen väliset komennot.

    par2
    Suoritettava ohjelma

    c -b1000 -n1
    Par2 ohjelmalle annettavia säätövipuja.

    '{}'
    Aaltosulut ovat aina se löytyneen tiedoston nimi. Hipsut ympärillä taas ovat merkkinä siitä että kyseessä on yksi tiedosto. Muuten par2 saattaa hämääntyä mikäli tiedoston nimessä on vaikkapa välilyönti.

    \;
    Puolipiste kertoo find-ohjelmalle että kaikki komennot on suoritettu ja voidaan aloittaa seuraavan tiedoston etsintä. Kenoviiva sen edessä on merkki komentotulkille ettei se yritä puolipistettä tulkita vaan siirtää sen find ohjelmalle sellaisenaan.

    Eihän ollutkaan mitenkään vaikeaa?

    Sivusto syö merkkejä. Kokeillaan uudestaan

    find
    Käytetään find nimistä ohjelmaa.

    .
    Tälle paikalle tulee hakemisto, mistä etsiminen aloitetaan ja sitten siirrytään sen alihakemistoihin. Piste tarkoittaa että etsintä aloitetaan nykyisestä hakemistosta.

    -type f
    Etsitään normaalit tiedostot. Ei siis esimerkiksi hakemistoja tai linkkejä.

    -execdir
    Kun haettu tiedosto löytyy niin siirrytään löytynen hakemistoon ja suoritetaan siellä -execdir ja seuraavan puolipisteen väliset komennot.

    par2
    Suoritettava ohjelma

    c -b1000 -n1
    Par2 ohjelmalle annettavia säätövipuja.

    '{}'
    Aaltosulut ovat aina se löytyneen tiedoston nimi. Hipsut ympärillä taas ovat merkkinä siitä että kyseessä on yksi tiedosto. Muuten par2 saattaa hämääntyä mikäli tiedoston nimessä on vaikkapa välilyönti.

    \;
    Puolipiste kertoo find-ohjelmalle että kaikki komennot on suoritettu ja voidaan aloittaa seuraavan tiedoston etsintä. Kenoviiva sen edessä on merkki komentotulkille ettei se yritä puolipistettä tulkita vaan siirtää sen find ohjelmalle sellaisenaan.

    Äänestä

  • nnGp:)S= kirjoitti:

    Sivusto syö merkkejä. Kokeillaan uudestaan

    find
    Käytetään find nimistä ohjelmaa.

    .
    Tälle paikalle tulee hakemisto, mistä etsiminen aloitetaan ja sitten siirrytään sen alihakemistoihin. Piste tarkoittaa että etsintä aloitetaan nykyisestä hakemistosta.

    -type f
    Etsitään normaalit tiedostot. Ei siis esimerkiksi hakemistoja tai linkkejä.

    -execdir
    Kun haettu tiedosto löytyy niin siirrytään löytynen hakemistoon ja suoritetaan siellä -execdir ja seuraavan puolipisteen väliset komennot.

    par2
    Suoritettava ohjelma

    c -b1000 -n1
    Par2 ohjelmalle annettavia säätövipuja.

    '{}'
    Aaltosulut ovat aina se löytyneen tiedoston nimi. Hipsut ympärillä taas ovat merkkinä siitä että kyseessä on yksi tiedosto. Muuten par2 saattaa hämääntyä mikäli tiedoston nimessä on vaikkapa välilyönti.

    \;
    Puolipiste kertoo find-ohjelmalle että kaikki komennot on suoritettu ja voidaan aloittaa seuraavan tiedoston etsintä. Kenoviiva sen edessä on merkki komentotulkille ettei se yritä puolipistettä tulkita vaan siirtää sen find ohjelmalle sellaisenaan.

    Päästiin askel lähemmäs onnistumista, mutta ei vielä ihan maaliin saakka.

    Komentoliittymä ei tuntunut ymmärtävän näitä:

    . (eli piste, joka olisi "nykyinen hakemisto")

    -type f (Tätä en löytänyt listoilta mainitsemassasi merkityksessä. Komentoliittymän Helpin mukaan TYPE = Displays the contents of a text file.)

    -execdir (kumma juttu, mutta ei löytynyt listoilta)

    {} (eli aaltosulut; eivät löytyneet myöskään listoilta)

    \; (eli kenoviiva & puolipiste; Tämän toimivuudesta en tiedä.)

    Muun muassa näitä tutkailin:

    http://www.yolinux.com/TUTORIALS/unix_for_dos_users.html

    http://www.tldp.org/LDP/abs/html/dosbatch.html

    Ehkä fiksummat ymmärtävät paremmin noita?

    Äänestä

  • Sranje stroj kirjoitti:

    Päästiin askel lähemmäs onnistumista, mutta ei vielä ihan maaliin saakka.

    Komentoliittymä ei tuntunut ymmärtävän näitä:

    . (eli piste, joka olisi "nykyinen hakemisto")

    -type f (Tätä en löytänyt listoilta mainitsemassasi merkityksessä. Komentoliittymän Helpin mukaan TYPE = Displays the contents of a text file.)

    -execdir (kumma juttu, mutta ei löytynyt listoilta)

    {} (eli aaltosulut; eivät löytyneet myöskään listoilta)

    \; (eli kenoviiva & puolipiste; Tämän toimivuudesta en tiedä.)

    Muun muassa näitä tutkailin:

    http://www.yolinux.com/TUTORIALS/unix_for_dos_users.html

    http://www.tldp.org/LDP/abs/html/dosbatch.html

    Ehkä fiksummat ymmärtävät paremmin noita?

    Googlettelin ja tulokseksi tuli että Windowsin find on aivan toisenlainen. Mitä jos kokeilisi tätä find ohjelmaa?
    http://gnuwin32.sourceforge.net/packages/findutils.htm

    Äänestä

  • Sranje stroj kirjoitti:

    Oisko sittenkin niin, ettei tuo ole edes mahdollista Windowsin komentoliittymässä?

    Ihan hyvin se on mahdollista. Vaatii vaan vähän opiskelua, kuten kaikissa ympäristöissä.

    Äänestä

batch tiedostoon alekkain kaikki tarvittavat hakemistot ja tuo komento teksti eteen.
mikä muuten on batch tiedosto.

Äänestä
  • Tässä nyt tuli vain väärä termi. Asia on kuitenkin ymmärrettävissä asiayhteydestä.

    Kun ohjelmaan tehdään muutos niin diff ohjelmalla tehdään patch tiedosto (suomeksi usein käytetään sanaa pätsi). Näin koko uutta ohjelmakoodin hakemistopuuta ei tarvitse kopioida. Vain tuo pieni pätsi. Patch ohjelma sitten muuttaa tuon pätsitiedoston avulla vanhan koodin uudeksi

    Tässä esimerkki siitä miltä pätsi voi näyttää.

    Description: Fix wrong path to the wrapper script
    Bug-Debian: http://bugs.debian.org/540238
    Author: Denis Briand
    Author: Jindřich Makovička

    --- mc-4.7.0-pre1.orig/contrib/mc.csh.in 2009-08-07 13:18:42.000000000 0200
    mc-4.7.0-pre1/contrib/mc.csh.in 2009-08-07 13:19:20.000000000 0200
    @@ -1 1 @@
    -alias mc 'source @pkglibexecdir@/mc-wrapper.csh'
    alias mc 'source /usr/share/mc/bin/mc-wrapper.csh'

    --- mc-4.7.0-pre1.orig/contrib/mc.sh.in 2009-08-07 13:19:37.000000000 0200
    mc-4.7.0-pre1/contrib/mc.sh.in 2009-08-07 13:20:07.000000000 0200
    @@ -1,3 1,3 @@
    # Don't define aliases in plain Bourne shell
    [ -n "${BASH_VERSION}${KSH_VERSION}${ZSH_VERSION}" ] || return 0
    -alias mc='. @pkglibexecdir@/mc-wrapper.sh'
    alias mc='. /usr/share/mc/bin/mc-wrapper.sh'

    Äänestä

onko windows'sis batch tiedosto. käytät par2j.exe's *.* joka windows systeemeis tarkoittaa kaikki mitä hakemistos on.

mikä tämä on
"C:\Program Files (x86)\MultiPar\par2j.exe" c /sn1000 /rr10 /rf1 "Parchive 2.0 Redundancy.par2" *.* siitä puutuu jotain.

Äänestä
  • Patch kuuluu ohjelmointiin, mutta ei tähän asiaan. Kysyjä vain sekoitti scriptitiedoston, jonka tunniste dossissa on .bat, batch nimeen. Dossissa puhutaankin usein bat-tidostoista. Scriptitiedostot sisältävät joukon käskyjä, joita käyttöjärjestelmän komentotulkki sitten noudattaa.

    Dossin komentotulkki oli erittäin yksinkertainen ja sillä voi tehdä vain melko alkeellisia asioita. Linux-jakeluissa Bash on melko yleinen ja sillä pystyy tekemään huomattavan monimutkaisiakin asioita. Uusissa Windowseissa on komentotulkkia parannettu. Sen mahdollisuuksiin en ole tutustunut.

    Tuossa on esimerkki siitä miten komentoriviä käytetään. Siinä on ensin ajettava ohjelma ja ohjelmalle annettavia määräyksiä.

    Kun tuo on kirjoitettu ja painettu Enteriä niin komentotulkki käynnistää ohjelman par2j.exe, tarjoilee sille määräykset ja laajentaa *.* merkin siten että syöttää ohjelmalle kaikki nykyisen hakemiston tiedostonimet, joiden nimessä on piste.

    Ongelmana on se ettei toiminta ole se mitä kysyjä haluaa ja minä en ole Windowsia käyttänyt tällä vuosituhannella. Ihmettelen missä lymyävät nämä palstan Windows-gurut. Nyt heille olisi tarvetta.

    Äänestä

  • nnGp:)S= kirjoitti:

    Patch kuuluu ohjelmointiin, mutta ei tähän asiaan. Kysyjä vain sekoitti scriptitiedoston, jonka tunniste dossissa on .bat, batch nimeen. Dossissa puhutaankin usein bat-tidostoista. Scriptitiedostot sisältävät joukon käskyjä, joita käyttöjärjestelmän komentotulkki sitten noudattaa.

    Dossin komentotulkki oli erittäin yksinkertainen ja sillä voi tehdä vain melko alkeellisia asioita. Linux-jakeluissa Bash on melko yleinen ja sillä pystyy tekemään huomattavan monimutkaisiakin asioita. Uusissa Windowseissa on komentotulkkia parannettu. Sen mahdollisuuksiin en ole tutustunut.

    Tuossa on esimerkki siitä miten komentoriviä käytetään. Siinä on ensin ajettava ohjelma ja ohjelmalle annettavia määräyksiä.

    Kun tuo on kirjoitettu ja painettu Enteriä niin komentotulkki käynnistää ohjelman par2j.exe, tarjoilee sille määräykset ja laajentaa *.* merkin siten että syöttää ohjelmalle kaikki nykyisen hakemiston tiedostonimet, joiden nimessä on piste.

    Ongelmana on se ettei toiminta ole se mitä kysyjä haluaa ja minä en ole Windowsia käyttänyt tällä vuosituhannella. Ihmettelen missä lymyävät nämä palstan Windows-gurut. Nyt heille olisi tarvetta.

    vaikuttanu järkevän hommalta alunpitäenkään, raid-systeemi riittänee tarkoitukseen ..

    Äänestä

  • ei toi oikeen kirjoitti:

    vaikuttanu järkevän hommalta alunpitäenkään, raid-systeemi riittänee tarkoitukseen ..

    Ei me voida tietää miksi kysyjä haluaa virheenkorjaustiedostoja tehdä. Siksi levymatriisiehdotuksesi on outo eikä tarjoa ratkaisua kysyjän ongelmaan.

    Äänestä

juu mä muistan ne vanhat dos ajan patch tiedostot ja tällä ei oo mitään tekemistä niiden kanssa.

tämä on vain .bat tiedosto johon kokoat tarvittavat asiat tuon par2j.exe'n perään.
ei kannata tehdä asioista liian vaikeita, ELLEI SITTEN SE OLLUT TARKOITUSKIN.

Äänestä

Kommentoi aloitusta


Sranje stroj kirjoitti:

Mun pitäis saada automatisoitua esim. batch-tiedostojen avulla seuraavanlainen toiminto (vähän lisätietoa samalla):

*Ulkoisella kiintolevyllä, joka on Y-asemassa ( Y: ), on useita kansioita...
*Kuhunkin näistä kansioista pitäisi päästä sisälle ja ajaa eräs toiminto
*Itse en jaksa kirjoittaa satoja kertoja komentoliittymässä "cd [kansion nimi]" ja ajaa tarvittavat ohjelmat ja sitten taas "cd .." ja cd [seuraavan kansion nimi]" jne..

...joten tarvitsisin komentoliittymää varten jonkun "scriptin" batch-tiedostolle, jolla kone osaisi mennä aakkosjärjestyksessä kansioiden sisällä ja ajaa toiminnon (MultiPar)...

Tuo joka kansion sisällä ajettava toiminto on MultiPar, jota käytän näin:

"C:\Program Files (x86)\MultiPar\par2j.exe" c /sn1000 /rr10 /rf1 "Parchive 2.0 Redundancy.par2" *.*

c = create
sn = source blockien määrä
rr = redundanssin määrä (prosenteissa)
rf = luotavien parchive-tiedostojen määrä

Tuo luo siis 10% korjausdatan joka kansion sisällölle siltä varalta jos tiedostoja vahingoittuu tms. Ongelmana on vain tuo automatisointi komentoliittymässä ajettavalle batch-tiedostolle, jotta osaisi käydä joka kansion läpi. Mistään en löytänyt vielä kunnon neuvoja tähän hätään.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu