Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Einer Batchfile Rechte geben

Frage Entwicklung Batch & Shell

Mitglied: Pixelschubser

Pixelschubser (Level 1) - Jetzt verbinden

28.10.2009 um 11:07 Uhr, 6301 Aufrufe, 40 Kommentare

Guten Tag,

eigentlich ist mein Problem simple, dennoch finde ich keine Lösung. Ich habe in Outlook 2007 eine Regel erstellt. Diese bewirkt, dass bei einem bestimmten Ereignis ein batch-script ausgeführt werden soll.

In dieser Batchfile soll unter anderem eine *.txt datei verändert werden. Dies funktioniert aber nur, wenn ich die Batch-Datei manuell auslöse. Wenn Sie über die Outlook-Regel ausgelöst wird, verändert er die txt-Datei nicht.
Für mich eine ganze klare Sache. Die Batch-Datei verfügt nicht über ausreichend Rechte um die txt-Datei zu bearbeiten.

Ich suche nach einer Befehlzeile, die die Batch-Datei die nötigen Rechte gibt um diese Datei zu bearbeiten. Wenn es geht ohne das Passwort in Klartext in das Script zu schreiben.

Kann mir jemand weiterhelfen?

Schöne Grüße
Samuel
40 Antworten
Mitglied: Larz
28.10.2009 um 11:15 Uhr
Hallo Samuel,

Du könntest ja einen geplanten Task einrichten, der dann von der Outlook-Regel aufgerufen wird. Dort kann man ja Benutzer und Passwort verdeckt hinterlegen.
In einer Batch geht das meines Wissens nicht.

Gruß
Larz
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 11:17 Uhr
wenn du dein script nicht direkt über Office aufrufst, sondern von einem vorangesetzten runas-script, dann sollte es ja funktionieren...

Ich habe hier im Forum schon batchscripte mit ein wenig vb drinnen, damit das passwort abgefragt, aber nicht angezeigt wird.
*such*
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 11:23 Uhr
Gute Idee, allerdings kann man keine Tasks in den Regeln ausführen lassen...
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 11:27 Uhr
Ich kann besagtes script momentan leider nicht finden. Allerdings könntest du das Passwort ja Base64-codiert in einem textfile speichern und dieses dann von einem vb-script decoden lassen. Das decodierte PW wird dann an die batch für den runas-befehl gesendet...

ömm moment mal:
RunAs hat doch sowieso eine verdeckte Passworteingabe, solange es dir nicht zuviel Mühe ist, das Passwort jedesmal selbst einzutippen reicht das doch
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 11:29 Uhr
Ohhhaa. Ich glaub etwas zu ansprochsvoll für meine bescheidenen Kenntnisse. Mit VB hatte ich noch nie was gemacht...
Bitte warten ..
Mitglied: 60730
28.10.2009 um 11:40 Uhr
Servus,

mal ganz laaangsam..

Per Outlook ein batch starten, damit dass in einer textdatei was ändert?
Ok soweit - so "krumm"

Aber nun noch eine andere Batch starten, die die Batch startet?
  • krümmer geht ümmer ?

Vermutung ist doch eher - ohne die Batch zu kennen - die läuft gar nicht.

mal ein
echo %date%time >%temp%\logfile.ini
am anfang der batch schreiben und dann outlook zwingen die Batch auszuführen - sollte einem zeigen ob die überhaupt läuft.

Aber wie geschrieben mit vba ein cmd starten - wo doch vba einiges kann?

Gruß
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 11:45 Uhr
Doch die Batch läuft. In der Batch werden auch noch andere Befehlszeilen ausgeführt.

for /F %%i in (status.txt) do set x=%%i
set /a y=(%x%-1)
echo %y% > status.txt

if %y%==1 GOTO off
if not %y%==1 GOTO end

:off
echo %y%
"C:\Power Manager\pm2.exe" -off -Device2 -Socket1

:end
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 11:46 Uhr
nicht mit vbs ein batch starten, sondern ein batch starten, das ein vbs ausführt, welches ein passwort decodiert und wieder zurückgibt, um es in einem RunAs-befehl zu verwenden, damit die eigentliche Batch als Admin läuft (umständlich, aber es funktioniert)
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 11:49 Uhr
Das würde dann wie ausschauen?
Bitte warten ..
Mitglied: Larz
28.10.2009 um 11:54 Uhr
Hi,

Du kannst doch einen Befehl ausführen lassen, oder? Sonst könntest Du die Batch nicht starten.

Nimm als Befehl
01.
schtasks /run /tn "Name des Tasks in Anführungszeichen"
So sollte es gehen. Falls tatsächlich nur eine Datei durch die Regel aufgerufen werden kann, dann müsste man wirklich eine "Hilfs-Batch" schreiben, die o.g. Befehl enthält. Ist aber wahrscheinlich schon so wie Timo unten schreibt, etwas "krümmer"...

Gruß
Larz

P.S.: Runas-Scripts - da muss man doch auch das Passwort im Klartext hinterlegen oder auf die Eingabe warten...
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 12:19 Uhr
Scheint nicht zu funktionieren. Wenn man einen Task anlegt, muss man vorher festlegen wann dieser ausgeführt werden soll.
Bitte warten ..
Mitglied: 60730
28.10.2009 um 12:29 Uhr
ich weiß - ich bin heute im Montagsmodus...

...Aber - wenn denn die batch läuft - warum sollte die dann weitere rechte bekommen?
01.
for /F %%i in (status.txt) do set x=%%i 
02.
set /a y=(%x%-1) 
03.
echo %y% > status.txt 
04.
 
05.
if %y%==1 GOTO off 
06.
if not %y%==1 GOTO end 
07.
 
08.
:off 
09.
echo %y% 
10.
"C:\Power Manager\pm2.exe" -off -Device2 -Socket1 
11.
 
12.
:end
entweder mal cmd dir status.txt /s laufen lassen oder aus
echo %y% > status.txt
echo %y% > laufwerk\pfad\status.txt
machen - wobei mir der Montagsmodus sagt - für jede Zeile in Status Text via > Status ändern?

Gruß
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 13:24 Uhr
Scheinbar ist es doch kein Rechteproblem.

Ich habe eine "PAUSE" reingebaut...

"Die Datei 'status.txt' kann nicht gefunden werden"

obwohl er genau auf den Ordner verweist...

Konsole
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 13:28 Uhr
sagst du jetzt, wo ich fertig bin? -.-'
http://pastebin.com/f2a199d30 <-- das VBScript
http://pastebin.com/f3ebb7c70 <-- das .BAT-File
Bitte warten ..
Mitglied: 60730
28.10.2009 um 13:34 Uhr
Zitat von Pixelschubser:
Scheinbar ist es doch kein Rechteproblem.
jaja - die ollen Säcke hams doch noch drauf...
Ich habe eine "PAUSE" reingebaut...
fürs testen immer gut..(genauso - wie :echo off)
"Die Datei 'status.txt' kann nicht gefunden werden"
aha
obwohl er genau auf den Ordner verweist...
nee kann nicht - sonst würde ja:
Die Datei "c:\pfad\status.txt" kann nicht gefunden werden.
als Fehlermeldung kommen...
01. for /F %%i in (laufwerk:\pfadd\status.txt) do set x=%%i

Gruß
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 13:40 Uhr
Hier mal einen kleinen Einblick...

Konsole
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 13:44 Uhr
Is das nicht a weng arg? Mein Script ist 10 Zeilen groß...
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 13:45 Uhr
Anführungszeichen in der schleife...

Deine schleife wird nicht durchlaufen. X bekommt keinen wert. Set /A meckert rum, weil X keinen wert hat. Y bekommt keinen wert. Nichts wird ausgeführt
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 13:50 Uhr
Wie kann ich dann den Wert aus der status.txt auslesen?
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 13:50 Uhr
würde man es von anfang an richtig schreiben...
und auch 1 zu 1 kopieren, dann hätt ich mir die arbeit garnet gemacht :P
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 14:53 Uhr
Wenn ich das Anführungszeichen raus nehme, habe ich das selbe Problem...
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 15:14 Uhr
Die Angabe deiner Textdatei in der Schleife muss in Anführungszeichen stehen. Da ist ein Leerzeichen drin..
Unter welchem verzeichnis läuft die Batch eigentlich, wenn du sie aus Office startest?
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 15:17 Uhr
Ja, habe ich beides ausprobiert. Funktioniert nicht.

Die Batch liegt im selben Verzeichnis wie die status.txt
Bitte warten ..
Mitglied: Biber
28.10.2009 um 15:21 Uhr
Moin pixelschubser,

du hättest dir und vor allem snowman25 einige Dutzend Minuten unwiderbringlich und für immer verlorener Lebenszeit ersparen können, wenn du
  • den tätsächlich aufgerufenen Batch gepostet hättest
  • wenigstens zum Testen der Batchschnipsel vom CMD-Prompt gearbeitet hättest

Dieser hier funktioniert, sagst du:
01.
For /F %%i in (status.txt) do set x=%%i 
02.
set /a y=(%x%-1) 
03.
echo %y% > status.txt 
04.
 
05.
if %y%==1 GOTO off 
06.
if not %y%==1 GOTO end 
07.
 
08.
:off 
09.
echo %y% 
10.
"C:\Power Manager\pm2.exe" -off -Device2 -Socket1 
11.
 
12.
:end
--> dann wird entsprechend dieser hier auch funktionieren:

01.
for /F %%i in ("c:\Power Manager\status.txt") do set x=%%i 
02.
set /a y=(%x%-1) 
03.
echo %y% > status.txt 
04.
 
05.
if %y%==1 GOTO off 
06.
if not %y%==1 GOTO end 
07.
 
08.
:off 
09.
echo %y% 
10.
"C:\Power Manager\pm2.exe" -off -Device2 -Socket1 
11.
 
12.
:end
Dass die Zeichen in der Klammer [ -> also ("c:\Power Manager\status.txt") ] in Anführungszeichen gehören hat snowman25 aber auch vor geraumer Zeit gepostet.

Ich denke, du solltest ihm mal einen Cappuccino ausgeben.

Grüße
Biber
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 15:24 Uhr
ich will nicht wissen wo sie liegt, sonder in welchem verzeichnis sie ausgeführt wird.
Wenn der von dir gepostete screenshot die Ausführung aus Office heraus ist, dann wird die batch im Verzeichnis C:\Dokumente und Einstellung\sysdoc ausgeführt.
wechsle vor allen anderen befehlen in das Verzeichnis C.\Power Manager durch:
01.
cd\ 
02.
cd "Power Manager"
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 15:25 Uhr
Ich denke, du solltest ihm mal einen Cappuccino ausgeben.

2 Cappucino wären angebrachter...

Grüße
Biber

Grüße zurück
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 15:27 Uhr
Beide Varianten funktionieren, wenn ich Sie manuell ausführe.. (doppelklick auf die cmd)

Allerdings funktionieren beide nicht, wenn ich Sie über Outlook ausführen lasse. Solche Sachen wie mit Anführungszeichen hab ich schon selber vorher ausprobiert. Da ich mir der Sache nicht so sicher war.
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 15:32 Uhr
nochmal zum mitlesen, und ganz langsam geschrieben:
ich will nicht wissen wo sie liegt, sonder in welchem verzeichnis sie ausgeführt wird.
Wenn der von dir gepostete screenshot die Ausführung aus Office heraus ist, dann wird die batch im Verzeichnis C:\Dokumente und Einstellung\sysdoc ausgeführt.
wechsle vor allen anderen befehlen in das Verzeichnis C:\Power Manager durch:

01.
cd\ 
02.
cd "Power Manager"
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 15:37 Uhr
Hab ich getan... Problem unverändert.

Konsole
Bitte warten ..
Mitglied: 60730
28.10.2009 um 15:39 Uhr
[OT]

kaum macht man mal was produktives für die "eigene" Firma...und hat den Haken nicht abgeklemmt..

Rächt es sich, das er sich mit einem Fred Batch rechte rumgeschlagen hat

Einer spammt mein Postfach zu...
[/OT]

Bin dann mal drausen (Haken raus genommen)

Gruß

edit einen haken muß ich wohl vergessen haben..

Ähh man kann hier auch bilder ablegen..

@echo off
machen die, die Alpha, Beta und Gamma Tests durch haben
und die, die keine Ahnung haben..
ECHO Off bei unfertigen Batchen raus !
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 15:44 Uhr
und wo ist jetzt der prompt hin? verschwunden?
poste hier die komplette batch und deine liste plus die status.txt (falls zu groß, kürzen)
Danach gibts noch genau eine antwort von mir, dann hab ich keine Bock mehr
Bitte warten ..
Mitglied: 60730
28.10.2009 um 15:51 Uhr
01.
c: 
02.
cd \"Power Manager" 
03.
for /F %%i in (status.txt) do set x=%%i 
04.
set /a y=(%x%-1) 
05.
echo %y% > status.txt 
06.
 
07.
if %y%==1 GOTO off 
08.
if not %y%==1 GOTO end 
09.
 
10.
:off 
11.
echo %y% 
12.
"C:\Power Manager\pm2.exe" -off -Device2 -Socket1 
13.
:end
@ Biber

offensichtlich mag die Schleife keine " lee r zeic hen"
01.
N:\>for /f %i in ("n:\l og\myini.log") do echo %i 
02.
N:\>echo n:\l 
03.
n:\l
Der inhalt von "n:\l og\myini.log" ist eine zahl - er wirft aber l für "l og" raus.

was einem dann aber auch klar wird - wenn man sich
FOR /F ["Optionen"] %Variable IN ("Zeichenkette") DO Befehl [Parameter]
genauer ansieht.
dem bastla wär das nicht passiert

Gruß & flitz
@Pixelschubser:Thema erledigt?
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 15:52 Uhr
Batch:

cd\
cd "Power Manager"

for /F %%i in (status.txt) do set x=%%i
set /a y=(%x%-1)
echo %y% > status.txt

if %y%==1 GOTO off
if not %y%==1 GOTO end

:off
echo %y%
"C:\Power Manager\pm2.exe" -off -Device2 -Socket1

:end

in der status.txt steht nur eine ziffer drin. Um normalfall die 1
Bitte warten ..
Mitglied: Snowman25
28.10.2009 um 16:05 Uhr
Last Comment:

grml... so ein radau wegen einer einzigen zahl??
dafür braucht man doch keine schleife
Bitte warten ..
Mitglied: Pixelschubser
28.10.2009 um 16:16 Uhr
Zitat von Snowman25:
Last Comment:

grml... so ein radau wegen einer einzigen zahl??
dafür braucht man doch keine schleife

Kann man es denn geschickter lösen?
Bitte warten ..
Mitglied: bastla
28.10.2009 um 17:27 Uhr
[OT]
@TimoBeil
dem bastla wär das nicht passiert
... der baut nämlich öfter mal richtigen Blödsinn ein ...

(Aber Du hast schon recht: "usebackq" verwende ich wirklich oft.)
[/OT]

Grüße
bastla
Bitte warten ..
Mitglied: Biber
28.10.2009 um 17:40 Uhr
Moin Pixelschrubber,

Kann man es denn geschickter lösen?

Welches der vielen angesprochenen Teilprobleme?

Ich fange mal mit dem lösbaren an:

a) Eine Text-Datei mit "Leerzeichen im Namen oder Pfad" mit einer FOR /F-Anweisung auslesen und erstes Token der Zeile in Variable setzen
[Für den Test am CMD-Prompt]
01.
 for /F "usebackq" %i in ("c:\Power Manager\status.txt") do ECHO set  "x=%i " 
02.
-- oder- 
03.
for /F %i in (' type "c:\Power Manager\status.txt"' ) do ECHO set  "x=%i "
b) Sonderfall: Inhalt einer Text-Datei mit "Leerzeichen im Namen oder Pfad" und EINER einzigen Zeile in Variable setzen
01.
SET /P x=<"c:\Power Manager\status.txt" 
02.
- oder-  
03.
SET /P "x=<"c:\Power Manager\status.txt""
Der Fall b) läge auch bei dir vor.... kannst Du nehmen.

ABER: grundsätzliche Probleme bleiben:
  • du prüfst in deiner Batch-Logik weder, ob die status.txt existiert noch ob die Variable %x% nach der FOR-Anweisung gesetzt ist
  • und initialisiert wird %x% auch nicht
  • und bei Egal-welchen-Fehlern rennt das Krams einfach weiter

Mit dem Ergebnis: mal funktionierts, mal halt nicht und wahrscheinlich lag es dann am letzten Patch-Day.

Ein weiterer Grund, warum dieser Thread so viel Administratoren-Zeit verbrannt hat ist die Herangehensweise des Fragens.

Entweder jemand fragt bei Skript-Problemen :
"Ich stehe im Moment hier bei A, möchte nach Ziel B und wollte auf folgenden schmalen Brettern dorthin gehen.
Kennt jemand einen anderen Weg? Vielleicht einen ausgetretenen Pfad oder etwas mit Beleuchtung?"

Oder jemand sagt:
"ich habe da etwas programmiert, das eigentlich funktioniert. Plötzlich tritt folgendes Problem auf: ..."

Da du eher die Oder-Variante gewählt hast, sind die Antworten natürlich auch erstmal auf das "schmale Brett" fixiert gewesen...
.. du hast ja unsere Augen darauf gelenkt.

Hat insgesamt auf beiden Seiten unnötige Irrwege verursacht.

Grüße
Biber
Bitte warten ..
Mitglied: 60730
28.10.2009 um 22:26 Uhr
Biber sowas von recht geben tuten tun..

c) Sonderfall
in der status.txt steht nur eine ziffer drin. Um normalfall die 1
01.
find "1" "C:\Power Manager\status.txt" && "C:\Power Manager\pm2.exe" -off -Device2 -Socket1 
02.
exit
da brauchts nicht mal ne Kanibale Varibale Variable...
@Biber - jetzt hätten wir mal einen Ansatz, ob wir bei dem "Problem" das Ende des ABc für die diversen Lösungen erleben?

Gruß

und bitte Fred auch mal als abhackt abhaken tun...
Bitte warten ..
Mitglied: Pixelschubser
29.10.2009 um 08:30 Uhr
Folgendes Script funktioniert jetzt:

SET /P x=<"c:\Power Manager\status.txt"
SET /a y=%x%-1

echo %y% > "c:\Power Manager\status.txt"

if %y%==1 GOTO off
if not %y%==1 GOTO end

:off
echo %y%
"C:\Power Manager\pm2.exe" -off -Device2 -Socket1

:end

Dann möchte ich mich bei allen bedanken und mich für meine schlechte Fragestellung entschuldigen.

Grüße
Samuel
Bitte warten ..
Mitglied: Snowman25
29.10.2009 um 09:12 Uhr
und wo bleibt mein Cappucino?
Bitte warten ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom blockiert immer noch den Port 7547 in ihrem Netz

(3)

Erfahrungsbericht von joachim57 zum Thema DSL, VDSL ...

Ähnliche Inhalte
Windows Userverwaltung
Benötigte Rechte für PC Domjoin (2)

Frage von Phill93 zum Thema Windows Userverwaltung ...

Linux Userverwaltung
Enter-Taste verschafft Angreifern Root-Rechte auf verschlüsselten Systemen (1)

Link von magicteddy zum Thema Linux Userverwaltung ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...