Discussion:
[Bat-program] Tjek af om ekstern harddisk er tilsluttet
(for gammel til at besvare)
Bertel Lund Hansen
2011-01-06 06:48:07 UTC
Permalink
Hej alle

Jeg har et bat-program der laver backup af mine arbejdsfiler
samt fordeler zippakker deraf til andre pc'er.

Jeg har også en eksterne harddisk der ikke altid er tilsluttet.
Jeg bruger et tjek for at kontriollere om den p.t.t er tilsluttet:

Set ekstern=IT
For %%d In (K M N O P Q R) Do If Exist %%d:\Pc_backup Set ekstern=%%d

Nu bruger jeg programmet under Windows 7, og den brokker
sig over at jeg tjekker nogle drev som er tomme (kortlæserdrev).
Det betyder at jeg tre gange skal trykke "Annuller" før det kører.

Kan jeg undgå det?
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Kall, Mogens
2011-01-06 10:02:41 UTC
Permalink
Post by Bertel Lund Hansen
Hej alle
Jeg har et bat-program der laver backup af mine arbejdsfiler
samt fordeler zippakker deraf til andre pc'er.
Jeg har også en eksterne harddisk der ikke altid er tilsluttet.
Set ekstern=IT
For %%d In (K M N O P Q R) Do If Exist %%d:\Pc_backup Set ekstern=%%d
Nu bruger jeg programmet under Windows 7, og den brokker
sig over at jeg tjekker nogle drev som er tomme (kortlæserdrev).
Det betyder at jeg tre gange skal trykke "Annuller" før det kører.
Welcome to Microshit !
Post by Bertel Lund Hansen
Kan jeg undgå det?
Microshit er lavet af aspergere, som ingen forståelse har for flexibilitet.
Tingene kan kun laves på éen måde, herunder at "shut up, Microshit"
desværre ikke eksisterer (endnu) !


Med venlig hilsen,
Mogens Kall, The servant of Michael.
--
Coming up news: Iran hit by a Asteroid. Iran is no more (Jer.49,34-)
Last OUTPUT: 11891 news:4cf621b0$0$23759$***@news.sunsite.dk
Info http://groups.google.dk/group/dk.test/msg/591d03940b49201e
Website https://sites.google.com/site/kalltree1 File no: 11947
Klaus Alexander Seistrup
2011-01-06 18:09:48 UTC
Permalink
Post by Bertel Lund Hansen
Set ekstern=IT
For %%d In (K M N O P Q R) Do If Exist %%d:\Pc_backup Set ekstern=%%d
Nu bruger jeg programmet under Windows 7, og den brokker
sig over at jeg tjekker nogle drev som er tomme (kortlæserdrev).
Det betyder at jeg tre gange skal trykke "Annuller" før det kører.
Sker det samme hvis du tjekker tilgængeligheden fra Python, og så kalder
BAT-filen med den aktuelle drevbetegnelse som argument?

Mvh,
--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/
Bertel Lund Hansen
2011-01-07 13:55:41 UTC
Permalink
Post by Klaus Alexander Seistrup
Sker det samme hvis du tjekker tilgængeligheden fra Python, og så kalder
BAT-filen med den aktuelle drevbetegnelse som argument?
Jeg har overvejet at lave det hele som et Pythonprogram, men jeg
valgte at beholde det som et rent batprogram fordi det så er
uafhængigt af ekstra installationer. Desuden er der kommandoer
som vil blive lidt 'indviklede' i Python som klares med en
parameter i bat. Men det er godt nok ikke noget smukt
programmeringssprog. Det er mig en kilde til stadig forundring.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Klaus Alexander Seistrup
2011-01-07 18:09:11 UTC
Permalink
#!/usr/bin/python
# -*- mode: python; coding: utf-8 -*-

import sys, os

for drive in 'KMNOPQR':
path = os.path.join(drive+':', 'Pc_backup')
try:
if os.path.exists(path) and os.path.isfile(path):
os.execvp('mybackupscript', ['mybackupscript', drive])
else:
pass

sys.exit(1)

# eof

Mvh,
--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/
Bertel Lund Hansen
2011-01-08 02:17:30 UTC
Permalink
Post by Klaus Alexander Seistrup
import sys, os
Tak for hjælpen, men det er ikke så enkelt. Mit batscript er på
247 linjer og klarer mange forskellige slags backup. Overførslen
til ekstern harddisk er kun én af dem.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Adam Sjøgren
2011-01-08 13:19:20 UTC
Permalink
Post by Bertel Lund Hansen
Post by Klaus Alexander Seistrup
import sys, os
Tak for hjælpen, men det er ikke så enkelt. Mit batscript er på
247 linjer og klarer mange forskellige slags backup. Overførslen
til ekstern harddisk er kun én af dem.
Du læste ikke andet end de første to linier af Python-scriptet?

Jeg kan ikke meget Python, men dette synes jeg var ret klart et kald til
Post by Bertel Lund Hansen
Post by Klaus Alexander Seistrup
os.execvp('mybackupscript', ['mybackupscript', drive])
?


Mvh.
--
"Accept the mystery!" Adam Sjøgren
***@koldfront.dk
Bertel Lund Hansen
2011-01-08 13:36:10 UTC
Permalink
Post by Adam Sjøgren
Du læste ikke andet end de første to linier af Python-scriptet?
Jo. Forstod du "mange forskellige slags backup"?
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Adam Sjøgren
2011-01-08 13:52:44 UTC
Permalink
Post by Bertel Lund Hansen
Post by Adam Sjøgren
Du læste ikke andet end de første to linier af Python-scriptet?
Jo. Forstod du "mange forskellige slags backup"?
Nej, du må have vist for lidt kontekst til at det blev klart.

Du kan ikke forestille dig at lægge checket af bogstav et sted og resten
af logikken et andet sted?


Mvh.

Adam
--
"Accept the mystery!" Adam Sjøgren
***@koldfront.dk
Bertel Lund Hansen
2011-01-08 16:11:57 UTC
Permalink
Post by Adam Sjøgren
Du kan ikke forestille dig at lægge checket af bogstav et sted og resten
af logikken et andet sted?
Jeg troede at jeg havde givet en fyldestgørende forklaring i mit
første svar til Klaus, men nu kan jeg se at jeg har taget fejl.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Adam Sjøgren
2011-01-08 17:02:13 UTC
Permalink
Post by Bertel Lund Hansen
Post by Adam Sjøgren
Du kan ikke forestille dig at lægge checket af bogstav et sted og
resten af logikken et andet sted?
Jeg troede at jeg havde givet en fyldestgørende forklaring i mit
første svar til Klaus, men nu kan jeg se at jeg har taget fejl.
Ja.

Det er ofte svært at hjælpe folk der ikke er interesserede i at forklare
yderligere om krav/begrænsninger/ønsker som ikke fremgår af den
oprindelige formulering af spørgsmålet, når disse viser sig relevante.

Nu er Klaus en ganske skarp fætter, så hvis jeg var dig ville jeg
overveje lidt introspektion også.

Nogle gange kan problemerne løses på andre måder end lige den dén der
sidder med hele opgaven i hovedet har lagt sig fast på - dels ved hjælp
af andre øjne på problemet, dels ved at man træder et skridt tilbage.

Men det kræver at man er villig til at uddybe (eller vise sin kode),
snarere end blot at afvise uden synderlig forklaring.


Mvh.

Adam
--
"Accept the mystery!" Adam Sjøgren
***@koldfront.dk
Bertel Lund Hansen
2011-01-08 17:47:30 UTC
Permalink
[...]
Fortæl mig noget jeg ikke ved.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Adam Sjøgren
2011-01-08 18:04:15 UTC
Permalink
Post by Bertel Lund Hansen
Fortæl mig noget jeg ikke ved.
Det tror jeg ikke længere på er muligt. Tak for snakken.


Mvh.

Adam
--
"Accept the mystery!" Adam Sjøgren
***@koldfront.dk
Bertel Brander
2011-01-06 19:01:05 UTC
Permalink
Post by Bertel Lund Hansen
Hej alle
Jeg har et bat-program der laver backup af mine arbejdsfiler
samt fordeler zippakker deraf til andre pc'er.
Jeg har også en eksterne harddisk der ikke altid er tilsluttet.
Set ekstern=IT
For %%d In (K M N O P Q R) Do If Exist %%d:\Pc_backup Set ekstern=%%d
Nu bruger jeg programmet under Windows 7, og den brokker
sig over at jeg tjekker nogle drev som er tomme (kortlæserdrev).
Det betyder at jeg tre gange skal trykke "Annuller" før det kører.
Kan jeg undgå det?
Du kan prøve at skifte drev i stedet, enten med "K:" eller
"cd /D K:", så vil den måske sige at "Enheden er ikke klar"
eller "Det angivne drev blev ikke fundet" i stedet for at
vente på at du "annullerer". Det er også muligt at "cd K:"
(dvs uden /D) virker. Du skal måske bruge %errorlevel% til
at checke om det gik godt.
Bertel Lund Hansen
2011-01-07 13:59:08 UTC
Permalink
Post by Bertel Brander
Du kan prøve at skifte drev i stedet, enten med "K:" eller
"cd /D K:", så vil den måske sige at "Enheden er ikke klar"
eller "Det angivne drev blev ikke fundet" i stedet for at
vente på at du "annullerer".
Det giver samme resultat (i Windows 7).

Jeg omgik problemet ved at omdøbe de faste kortdrev til S, T og U
så jeg kan tjekke tilslutninger i et interval der ikke berører
dem.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Benny Andersen
2011-01-08 20:56:26 UTC
Permalink
Post by Bertel Lund Hansen
Hej alle
Jeg har et bat-program der laver backup af mine arbejdsfiler
samt fordeler zippakker deraf til andre pc'er.
Jeg har også en eksterne harddisk der ikke altid er tilsluttet.
Set ekstern=IT
For %%d In (K M N O P Q R) Do If Exist %%d:\Pc_backup Set ekstern=%%d
Nu bruger jeg programmet under Windows 7, og den brokker
sig over at jeg tjekker nogle drev som er tomme (kortlæserdrev).
Det betyder at jeg tre gange skal trykke "Annuller" før det kører.
Kan jeg undgå det?
Måske - her en ide, jeg gider ikke teste!

Kan man skrive sådan i en batfil:
For %%d In (K M N O P Q R) Do (
command
command
...
)

Hvis det er muligt, så stedet for 'If Exist ...'

fexist %%d:\Pc_backup
if not errorlevel 1 goto done
Set ekstern=%%d
:done

fexist er en utility med den strategi at der testes på listen af
eksisterende drev før der spørges på filnavnet. Alt andet, end lige
batfiler er mere kapabelt mht. systemkald - det skulle undre mig om ikke
det kan laves i selv vbscript; sikkert i phyton, helt sikkert i java og
i sin lidenhed udgøres det af følgende hvis man lige har i c compiler.

#include <windows.h>
#include <string.h>
#include <dir.h>

int main(int argc,char *argv[]) {
char buf[128];
char *drivesBuf = buf;
struct ffblk f;

int driveStrSize = GetLogicalDriveStrings(sizeof(buf),buf);

while (*drivesBuf) {
if (!strnicmp(drivesBuf,argv[1],3)) {
break;
}
while (*(++drivesBuf));
drivesBuf++;
}
return (drivesBuf < buf+driveStrSize) && !findfirst(argv[1],&f,0);
}
Bertel Lund Hansen
2011-01-09 08:16:08 UTC
Permalink
Post by Benny Andersen
For %%d In (K M N O P Q R) Do (
command
command
...
)
Sagtens.
Post by Benny Andersen
fexist er en utility med den strategi at der testes på listen af
eksisterende drev før der spørges på filnavnet.
Jeg har valgt at lave min bakup-rutine uafhængig af ekstra
installationer.
--
Bertel
http://bertel.lundhansen.dk/ FIDUSO: http://fiduso.dk/
Benny Andersen
2011-01-10 08:20:54 UTC
Permalink
Post by Bertel Lund Hansen
Jeg har valgt at lave min bakup-rutine uafhængig af ekstra
installationer.
Det princip forstår jeg godt - så fungerer det på en vilkårlig windows
maskine!
Klippet fra vbscript hjælpen:

Remarks
For drives with removable media, the DriveExists method returns True
even if there are no media present. Use the IsReady property of the
Drive object to determine if a drive is ready.
The following example illustrates use of the DriveExists method:

Function ReportDriveStatus(drv)
Dim fso, msg
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.DriveExists(drv) Then
msg = ("Drive " & UCase(drv) & " exists.")
Else
msg = ("Drive " & UCase(drv) & " doesn't exist.")
End If
ReportDriveStatus = msg
End Function

Loading...