Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[Bat-program] Tjek af om ekstern harddisk er tilsluttet

8 views
Skip to first unread message

Bertel Lund Hansen

unread,
Jan 6, 2011, 1:48:07 AM1/6/11
to
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

unread,
Jan 6, 2011, 5:02:41 AM1/6/11
to

"Bertel Lund Hansen" <splittemi...@lundhansen.dk> skrev i en meddelelse
news:65pai6hjmvivbojfb...@news.dotsrc.org...

> 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.

Welcome to Microshit !

>
> 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$1472...@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

unread,
Jan 6, 2011, 1:09:48 PM1/6/11
to
Bertel Lund Hansen skrev:

> 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.

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 Brander

unread,
Jan 6, 2011, 2:01:05 PM1/6/11
to
Den 06-01-2011 07:48, Bertel Lund Hansen skrev:
> 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?

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

unread,
Jan 7, 2011, 8:55:41 AM1/7/11
to
Klaus Alexander Seistrup skrev:

> 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 Lund Hansen

unread,
Jan 7, 2011, 8:59:08 AM1/7/11
to
Bertel Brander skrev:

> 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.

Klaus Alexander Seistrup

unread,
Jan 7, 2011, 1:09:11 PM1/7/11
to
#!/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

Bertel Lund Hansen

unread,
Jan 7, 2011, 9:17:30 PM1/7/11
to
Klaus Alexander Seistrup skrev:

> 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.

Adam Sjøgren

unread,
Jan 8, 2011, 8:19:20 AM1/8/11
to
On Sat, 08 Jan 2011 03:17:30 +0100, Bertel wrote:

> Klaus Alexander Seistrup skrev:

>> 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
"backup-bat-script-minus-bogstavleg":

>> os.execvp('mybackupscript', ['mybackupscript', drive])

?


Mvh.

--
"Accept the mystery!" Adam Sjøgren
as...@koldfront.dk

Bertel Lund Hansen

unread,
Jan 8, 2011, 8:36:10 AM1/8/11
to
Adam Sjøgren skrev:

> Du læste ikke andet end de første to linier af Python-scriptet?

Jo. Forstod du "mange forskellige slags backup"?

Adam Sjøgren

unread,
Jan 8, 2011, 8:52:44 AM1/8/11
to
On Sat, 08 Jan 2011 14:36:10 +0100, Bertel wrote:

> Adam Sjøgren skrev:

>> 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

Bertel Lund Hansen

unread,
Jan 8, 2011, 11:11:57 AM1/8/11
to
Adam Sj�gren skrev:

> 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.

Adam Sjøgren

unread,
Jan 8, 2011, 12:02:13 PM1/8/11
to
On Sat, 08 Jan 2011 17:11:57 +0100, Bertel wrote:

> Adam Sjøgren skrev:

>> 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.

Bertel Lund Hansen

unread,
Jan 8, 2011, 12:47:30 PM1/8/11
to
Adam Sjøgren skrev:

> [...]

Fortæl mig noget jeg ikke ved.

Adam Sjøgren

unread,
Jan 8, 2011, 1:04:15 PM1/8/11
to
On Sat, 08 Jan 2011 18:47:30 +0100, Bertel wrote:

> Fortæl mig noget jeg ikke ved.

Det tror jeg ikke længere på er muligt. Tak for snakken.

Benny Andersen

unread,
Jan 8, 2011, 3:56:26 PM1/8/11
to
Bertel Lund Hansen wrote:
> 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?
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

unread,
Jan 9, 2011, 3:16:08 AM1/9/11
to
Benny Andersen skrev:

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

Sagtens.

> 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.

Benny Andersen

unread,
Jan 10, 2011, 3:20:54 AM1/10/11
to
Bertel Lund Hansen wrote:

> 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

0 new messages