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

Script funktioniert nicht mehr, wenn es unter Startmenü ausgeführt wird

Frage Entwicklung Batch & Shell

Mitglied: joe65

joe65 (Level 1) - Jetzt verbinden

14.10.2013 um 19:24 Uhr, 1413 Aufrufe, 5 Kommentare

Das folgende Batch-Script funktioniert nicht mehr, wenn ich es in das Startmenü von Windows 7 einbinde und von dort aus ausführen will.
Ich bekomme dann den Fehler: Zugriff verweigert.
Meine Vermutung ist, das auf die "Ergebnisdatei" nicht zugegriffen werden kann.
01.
@echo off 
02.
setlocal 
03.
cls 
04.
mode con: cols=130 lines=50 
05.
 
06.
Title Anzahl Dateien ermitteln 
07.
 
08.
set "Ergebnisdatei=Anzahl_Dateien_%date%.txt" 
09.
 
10.
:setPath 
11.
color 07 
12.
set myPath= 
13.
set /p myPath=Geben Sie das Verzeichnis ein:  
14.
echo. 
15.
 
16.
if /i '%myPath%'=='' ( 
17.
  color 47 
18.
  echo Es wurde kein Verzeichnis eingegeben! 
19.
  pause 
20.
  goto setPath 
21.
22.
if /i not exist %myPath% ( 
23.
  color 47 
24.
  Ungueltiges Verzeichnis: %myPath% 
25.
  goto setPath 
26.
27.
 
28.
echo Anzahl der Dateien im Verzeichnis %myPath% ermitteln 
29.
echo und in eine Ergebnisdatei = %Ergebnisdatei% schreiben! 
30.
pause 
31.
 
32.
echo Bitte warten ... 
33.
echo Startzeit: %time% >> "%Ergebnisdatei%" 
34.
for /f %%k IN ('dir "%myPath%" /s /b /A-D ^| find /c /v ""') DO @echo %%k Datei(en) im Verzeichnis %myPath% vorhanden. >> %Ergebnisdatei% 
35.
echo Endezeit: %time% >> "%Ergebnisdatei%" 
36.
 
37.
color 27 
38.
echo. 
39.
echo Anzahl Dateien wurden ermittelt! 
40.
pause
Grüße
joe65
Mitglied: DerWoWusste
14.10.2013 um 20:54 Uhr
Hi.

In welchem Ordner liegt das Skript? Das Startmenü ist mehr als zweideutig.
Bitte warten ..
Mitglied: AndreasHoster
14.10.2013 um 22:50 Uhr
Ich würde es mal ohne @echo off probieren, dann sieht man was es tut und wo es hängenbleibt.
Sehen was passiert könnte helfen ...
Bitte warten ..
Mitglied: joe65
15.10.2013 um 20:46 Uhr
Hallo,

habe den echo off rausgenommen.
Der Fehler "Zugriff verweigert" tritt 3 mal auf.
1. Mal bei Codestelle:
01.
echo Startzeit: %time% >> "%Ergebnisdatei%"
2. Mal bei Codestelle:
01.
for /f %%k IN ('dir "%myPath%" /s /b /A-D ^| find /c /v ""') DO @echo %%k Datei(en) im Verzeichnis %myPath% vorhanden. >> %Ergebnisdatei%
3. Mal bei Codestelle:
01.
echo Endezeit: %time% >> "%Ergebnisdatei%"
Es sieht so aus, als hat er Probleme mit der Ergebnisdatei.
Die Batch-Routine (Anzahl_Dateien.cmd) liegt im Verzeichnis D:\Meine_Dateien.
Wenn ich die Routine direkt vom Verzeichnis aufrufe habe ich keine Probleme.
Das Script habe ich ins Startmenü gestellt, indem ich einfach durch Shift + "Rechte Maus Click" auf die Datei den Menüpunkt "An Startmenü anheften" gewählt habe.

Grüße
joe65
Bitte warten ..
Mitglied: pieh-ejdsch
17.10.2013, aktualisiert um 18:39 Uhr
moin,

bei echo off sieht man ja schon wenig aber bei Echo OM ON ist noch etwas Betriebsblindheit vorhanden:
C:\Windows\system32>Title Anzahl Dateien ermitteln 
 
C:\Windows\system32>set "Ergebnisdatei=Anzahl_Dateien_%date%.txt" 
...
Im Systemverzeichnis herummalen ist auch nicht gut.

Falls es mal wieder hakt ist ein Test besser:
01.
::@echo off 
02.
 rem hat in einer Ungetesteten Batch/Bereich nichts verloren 
03.
 rem wenn ich Eine Batch teste dann lege ich ECHO ON/ECHO OFF in 
04.
 rem einer Offenen CMD_Line fest und starte darin den Batch 
05.
 
06.
setlocal 
07.
 rem Ein paar kleine Helferlein 
08.
 rem zum testen von Batchdateien 
09.
 
10.
 rem Prompt kuerzer einstellen [Gilt in diesem SetLocal ] 
11.
set Prompt=$G$S 
12.
 
13.
 rem Wenns nacher auch so sein soll: Prompt $G$S 
14.
 
15.
 rem Echo Ausgabe? 
16.
call :checkECHO 
17.
 
18.
:checkCMDline Überprüft ob die Batch in der Kommandozeile gestartet wurde. 
19.
@echo off 
20.
setlocal disabledelayedexpansion 
21.
 rem CMD-Kontex ? 
22.
set "CMDPause=%~f0" 
23.
set "CMDPause=%CMDPause:\=\\%" 
24.
set "CMDPause=%CMDPause:.=\.%" 
25.
setlocal enabledelayedexpansion 
26.
for /f delims^= %%i in ("!CMDcmdLine!") do endlocal &set "CMDPin=%%i" 
27.
cmd /von /c "echo !CMDPin!" |findstr /irc:"cmd .*\/c \"\"%CMDPause%\" .*\"" >nul &&endlocal &&set "CMDPause=pause &" ||endlocal &&set "CMDPause="  
28.
:;end_checkCMDline Variable CMDpause wird im Batchkontex zur verfügung gestellt. 
29.
 
30.
 rem Wiederherstellen der vorigen ECHO einstellung 
31.
if %mon%. equ rem. echo on 
32.
 
33.
%mon% Ich laufe in diesem Verzeichnis: 
34.
cd 
35.
%mon%  
36.
%mon% Der name der Batchdatei ist: 
37.
%mon% 	%~n0 
38.
%mon% 
39.
%mon% Der Pfad der Batchdatei ist:  
40.
%mon% 	%~dp0 
41.
%mon% 
42.
 
43.
call :sub1 
44.
if errorlevel 1 echo Fehler im vorigen Befehl 
45.
call :sub check 
46.
if errorlevel 1 echo Fehler im vorigen Befehl 
47.
if errorlevel 0 echo voriger Befehl erfolgreich  
48.
goto :weiter Hinter der Sub 
49.
 if errorlevel 1 rem Der Fehler wird beim goto nicht angezeigt 
50.
:sub 
51.
%mon% Wo laufe ich denn? 
52.
setlocal enabledelayedexpansion 
53.
set R=%0 
54.
if !R:~^,1! neq : (endlocal 
55.
 %mon% Ich bin in der Batch: "%~f0" 
56.
 %mon% die Paramter der Batch sind: %* 
57.
) else ( 
58.
 %mon% Ich bin in der Subroutine: %0 
59.
 %mon% die Paramter der Subroutine sind: %* 
60.
61.
%mon% 
62.
exit /b 0 
63.
 
64.
:weiter 
65.
%mon% Wo laufe ich denn? 
66.
setlocal enabledelayedexpansion 
67.
set R=%0 
68.
if !R:~^,1! neq : (endlocal 
69.
 %mon% Ich bin in der Batch: "%~f0"  
70.
 %mon% 
71.
 %mon% die Paramter der Batch sind: %* 
72.
) else ( 
73.
 %mon% Ich bin in der Subroutine: %0 
74.
 %mon% 
75.
 %mon% die Paramter der Subroutine sind: %* 
76.
77.
 
78.
 rem Das Verzeichnis der Batchdatei verwenden 
79.
pushD "%~dp0" 
80.
cd 
81.
 
82.
popD 
83.
 rem und nun gibts eine Pause wenn dieser Batch nicht im CDM-Kontex ist, 
84.
 rem was  man ja beim Testen ohnehin in einer offenen CMD-Line tun sollte. 
85.
%cmdpause% exit /b 
86.
 
87.
:checkECHO Um eine Batch vor dem Produktivbetrieb zu testen 
88.
 rem Mon Zeilen bei ECHO ON auf REM umschalten, um zB. Kommentarzeilen  
89.
 rem auch bei ECHO OFF anzuzeigen sowie die vorherige Wiedergabe des Echos 
90.
 rem bei echo on zu unterbinden wird die Variable Mon dementsprechend gesetzt. 
91.
echo>"%temp%\isOn.echocheck" 
92.
< "%temp%\isOn.echocheck" find "ON" >nul && set "Mon=rem" || set "Mon=echo(" 
93.
del "%temp%\isOn.echocheck" 
94.
:;end_checkECHO 
95.
exit /b
Gruß Phil
Bitte warten ..
Mitglied: joe65
20.10.2013 um 16:40 Uhr
Hallo Phil,

Danke für deine Anmerkungen. Ich habe mittlerweile festgestellt, das der Fehler "Zugriff verweigert" nicht mehr kommt, wenn man eine Verknüpfung des Batch-Scripts in das Startmenü stellt. Werde die Frage als gelöst markieren.

Gruß
joe65
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Datei kopieren mit ACL Script funktioniert nicht (4)

Frage von xpxy15 zum Thema Batch & Shell ...

Batch & Shell
Systemvariable funktioniert im Script nicht (4)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit welchen Rechten wird ein Startup Script ausgeführt? (3)

Frage von vessev zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...