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.
*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.
Vastaukset 21
Vanhimmat
For-silmukalla tietenkin. Katso komennot
For /?
Cd /?
Dir /?
Niin saat lisätietoa.
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ä.
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.
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" *.*
Windowsilla en osaisi mutta Linuxilla tekisin jotenkin näin
find . -type f -execdir par2 c -b1000 -r10 -n1 '{}' \;
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 !
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?
Lapset hiljaa kun miehet puhuvat aikuisten asioista.
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?
Googlettelin ja tulokseksi tuli että Windowsin find on aivan toisenlainen. Mitä jos kokeilisi tätä find ohjelmaa?
http://gnuwin32.sourceforge.net/packages/findutils.htm
Ihan hyvin se on mahdollista. Vaatii vaan vähän opiskelua, kuten kaikissa ympäristöissä.
batch tiedostoon alekkain kaikki tarvittavat hakemistot ja tuo komento teksti eteen.
mikä muuten on batch tiedosto.
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'
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.
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 ..
Ei me voida tietää miksi kysyjä haluaa virheenkorjaustiedostoja tehdä. Siksi levymatriisiehdotuksesi on outo eikä tarjoa ratkaisua kysyjän ongelmaan.
Mitään en asiasta tiedä, mutta
http://technet.microsoft.com/en-us/library/ee176841.aspx
http://stackoverflow.com/questions/2698574/get-childitem-to-move-item-path-not-found
Toki tossa siirretään tiedostoja, mutta idea selviää.
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.