Avatar billede margitbork Nybegynder
03. juli 2007 - 13:13 Der er 19 kommentarer og
1 løsning

Batch, kan jeg aflæse placering af min .bat fil

Hej

Kan en .bat fil aflæse hvor den selv er placeret ? - altså ikke hvor den er startet op fra, men dens fysiske placering ?
03. juli 2007 - 13:30 #1
Variablen
%0

http://www.dx21.com/SCRIPTING/MSDOS/SPCVAR.ASP
http://www.maem.umr.edu/batch/variable.htm ->
%0 always exists (initially) and is the name of the batch file as given in the command. If given in short form, it is just the name; if given in long form, the name is preceded by the path that was used. This is extremely useful in recursive and reentrant batch files


(Hvis det er det du mener?)
Avatar billede margitbork Nybegynder
03. juli 2007 - 13:42 #2
men kan jeg nøjes med kun at få min path? uden filnavn..
Min bat fil kalder videre til andre bat filer, og det virker ikke hvis batfilen er
startet fra en anden placering end der hvor de ligger, så jeg har brug for at kunne lave en cd til det directory hvor min bat fil er placeret.
Avatar billede margitbork Nybegynder
03. juli 2007 - 13:42 #3
Det skal også virke selvom der startes fra C og min fil ligger på D
Avatar billede old-faithful Praktikant
03. juli 2007 - 14:52 #4
Variablen %cd% giver dig »current directory« eller den nuværende mappe.

// Old-Faithful™
Avatar billede margitbork Nybegynder
03. juli 2007 - 15:04 #5
Nej desværre, %cd% giver det directory batch jobbet er kaldt fra. DVS hvis jeg har denne kommando:
C:\>"D:\ApplicationName\app\bin\receive.bat" returnerer %cd% C:/
03. juli 2007 - 15:52 #6
Hvad aflevere %0 ? I dit tilfælde ?
Lidt mapulation med variablen bør kunne vise det ønskede; har set det engang...
Avatar billede old-faithful Praktikant
03. juli 2007 - 15:58 #7
Kan du ikke bruge "cd.." og "cd mappenavn" til at navigere hen til den mappe som batch-filen ligger i?
Avatar billede margitbork Nybegynder
04. juli 2007 - 13:03 #8
i %0 har jeg D:/installdir/appname/app/bin/receive.bat
Jeg har brug for derudfra at kunne skrive linierne
D:
cd D:/installdir/appname/app/bin/receive.bat

Men kan jeg det ?
Avatar billede margitbork Nybegynder
04. juli 2007 - 13:03 #9
jeg mener selvfølgeligt..

i %0 har jeg D:/installdir/appname/app/bin/receive.bat
Jeg har brug for derudfra at kunne skrive linierne
D:
cd D:/installdir/appname/app/bin

Men kan jeg det ?
Avatar billede old-faithful Praktikant
04. juli 2007 - 13:35 #10
Jeg kan godt mærke at det er lang tid siden jeg har skrevet batch :-D

Virker den her?:

  set BAT_HOME=%~dp0
  echo %BAT_HOME%
  cd %BAT_HOME%

Fundet på: http://www.rgagnon.com/gp/gp-0008.html

// Old-Faithful™
Avatar billede margitbork Nybegynder
04. juli 2007 - 13:52 #11
Det giver mig linien til cd, men hvis jeg har startet fra c, og min kommando er placeret på d virker det ikke.
Jeg skal lige have linien
D:
med...
Kan du også den ?
Avatar billede old-faithful Praktikant
04. juli 2007 - 13:57 #12
Hmm, jeg ved ikke om jeg forstår hvad du mener. Kan du ikke uddybe?
Avatar billede margitbork Nybegynder
04. juli 2007 - 14:06 #13
Jeg har det...
rem changes running directory to fysical location of the batch file...
%~d0
cd %~dp0
rem now we are in the bin folder of the application.
Avatar billede margitbork Nybegynder
04. juli 2007 - 14:07 #14
Jeg googlede lige det der %~dp0 og det gav mig hvad jeg manglede. Tak for hjælpen, du skal da have dine points for at få mig hjulpet i den rigtige retning, så drop et svar :o)
Avatar billede old-faithful Praktikant
04. juli 2007 - 14:09 #15
Udmærket! Her er et svar så.

Måske kan du lægge løsningen her, så andre med samme problem kan få noget ud af det ;-)
Avatar billede margitbork Nybegynder
04. juli 2007 - 14:17 #16
Her er løsningen...

%~d0
cd %~dp0
Avatar billede old-faithful Praktikant
04. juli 2007 - 14:28 #17
Det er jo påfaldende simpelt. Tak for point!
Avatar billede margitbork Nybegynder
04. juli 2007 - 14:32 #18
Det svære er som regel ikke at gøre det, men at vide hvordan...
04. juli 2007 - 18:34 #19
PS: Sådan kan man også gøre ->

cd /D "D:/installdir/appname/app/bin/receive.bat"

Citat fra
CD /?

"Brug parameteren /D for at ændre det aktuelle drev og samtidig ændre den
aktuelle mappe på drevet."

PS[2]:
Hvis der nu er mellemrum i en mappe/filnavn så går der vel ged i det ?
Du skal nok have "" omkring ?
Avatar billede margitbork Nybegynder
06. juli 2007 - 07:41 #20
Ovennævnte virker også uden "" omkring. Der hvor jeg forsøgte var der blanke i foldernavne. Tak for info om /D parameteren.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester