36539
Goto Top

Batch - mit vbs-Sequenz - funktioniert nicht auf WIN Vista

Hallo,

habt Ihr einen Idee warum diese Sequenz einer Batch auf XP hervorragend funktioniert, jedoch unter Vista falsche Ergebnisse liefert?

@echo off & setlocal
set "NoFF=%temp%\NoFF.vbs"  
set "Verz=%userprofile%\Favoriten"  
set "inhalt=Nicht Leer"  
echo %Verz%
echo Set fso=CreateObject("Scripting.FileSystemObject"):Set f=Fso.GetFolder(WScript.Arguments(0)):WScript.Echo f.Files.Count+f.SubFolders.Count>%NoFF%  
if exist "%Verz%" for /f %%i in ('cscript //nologo %NoFF% "%Verz%"') do if %%i==0 set inhalt=Leer  
echo %inhalt%
del %NoFF%
endlocal
pause

Wenn kein Ordner "Links" und keine URL mehr unter "Favoriten" vorhanden ist meldet die Batch unter Win XP korrekt Verzeichnis "Leer" unter Vista jedoch "Nicht Leer".

Sehr eigenartig.

Eine Idee?

Gruß
onegasee59

Content-Key: 102325

Url: https://administrator.de/contentid/102325

Printed on: April 19, 2024 at 07:04 o'clock

Member: bastla
bastla Nov 20, 2008 at 22:10:57 (UTC)
Goto Top
Hallo onegasee59!

Versuch es mit "Favorites" anstelle von "Favoriten" ...

Grüße
bastla
Mitglied: 36539
36539 Nov 20, 2008 at 22:19:54 (UTC)
Goto Top
Danke bastla,

Leider nein - Ändert nichts - Vista liefert falsches Ergebnis.

Gruß
onegasee59
Member: bastla
bastla Nov 20, 2008 at 22:25:55 (UTC)
Goto Top
Hallo onegasee59!

Vielleicht hast Du eine "desktop.ini" im Ordner (dir /a sollte sie anzeigen, nach einem "attrib -h -s" kannst Du sie auch per Batch löschen) ...

Grüße
bastla
Member: Biber
Biber Nov 20, 2008 at 22:33:45 (UTC)
Goto Top
Moin onegasee59,

was liefert denn der VBS-Schnipsel, wenn er schon nicht 0 liefert?
Oder wird er gar nicht gefunden/ausgeführt?

Im Nebel mitstochernd
Biber

P.S. @bastla: die desktop.ini ist mit gleicher Wahrscheinlichkeit auch unter XP vorhanden....
Member: bastla
bastla Nov 20, 2008 at 22:51:43 (UTC)
Goto Top
@Biber
Is klar, war aber das Einzige, was bei mir vorhin eine erfolgreiche "Leermeldung" verhindert hatte ...

@36539
Um im Fall des Falles noch mehr eingrenzen zu können, kannst Du den Script-Teil nur "Files" oder nur "Subfolder" suchen lassen, indem Du in Zeile 6 entweder
+f.SubFolders.Count
oder
f.Files.Count+
herausnimmst.

Grüße
bastla
Mitglied: 36539
36539 Nov 21, 2008 at 00:18:25 (UTC)
Goto Top
Hallo Biber, Hallo bastla,

1.
"desktop.ini" ist weder bei XP noch Vista unter ´Favoriten vorhanden
(geprüft über versteckte Systemdateien und alle Dateien anzeigen)

2.
ich MUSS komplett alles ab "...Favoriten\..... löschen, Ordner und einzelne URL.
Daher benötige ich zwingend die Info ob ab "...Favoriten\..." Ordner und/oder einzelne Url vorhanden sind.

3.
Wenn ...Favoriten\... vollständig leer, liefert der Schnipsel..
if exist "%Verz%" for /f %%i in ('cscript //nologo %NoFF% "%Verz%"') do set "inhalt=%%i"  
für %inhalt% unter Vista = 1 unter XP = 0

4.
Über Variable und OS-Prüfung wird entweder "Favoriten" oder "Favorites" gesetzt.

gruß
onegasee59
Member: bastla
bastla Nov 21, 2008 at 00:24:07 (UTC)
Goto Top
Hallo onegasee59!

Du könntest, wie oben angeführt, noch herausfinden, ob es sich bei dem einen ermittelten Objekt um eine Datei oder einen Ordner handelt ...

Grüße
bastla
Mitglied: 36539
36539 Nov 21, 2008 at 00:26:47 (UTC)
Goto Top
gelöscht
Mitglied: 36539
36539 Nov 21, 2008 at 00:57:32 (UTC)
Goto Top
Zitat von @bastla:
Du könntest, wie oben angeführt, noch herausfinden, ob es sich bei dem einen ermittelten Objekt um eine Datei oder einen Ordner handelt ...

echo Set fso=CreateObject("Scripting.FileSystemObject"):Set f=Fso.GetFolder(WScript.Arguments(0)):WScript.Echo f.SubFolders.Count>%NoFF%  
if exist "%Verz%" for /f %%i in ('cscript //nologo %NoFF% "%Verz%"') do set "inhalt=%%i"  
Ergebnis für %inhalt%
XP = 0
Vista = 0

 
echo Set fso=CreateObject("Scripting.FileSystemObject"):Set f=Fso.GetFolder(WScript.Arguments(0)):WScript.Echo f.Files.Count>%NoFF%  
if exist "%Verz%" for /f %%i in ('cscript //nologo %NoFF% "%Verz%"') do set "inhalt=%%i"  
Ergebnis für %inhalt%
XP = 0
Vista = 1

gruß
onegasee59
Member: bastla
bastla Nov 21, 2008 at 06:49:57 (UTC)
Goto Top
Hallo onegasee59!

Dann schaun mer mal:
echo Set fso=CreateObject("Scripting.FileSystemObject"):Set f=Fso.GetFolder(WScript.Arguments(0)):For Each File In f.Files:WScript.Echo File.Name:Next>%NoFF%  
if exist "%Verz%" for /f %%i in ('cscript //nologo %NoFF% "%Verz%"') do echo %%i  
Grüße
bastla
Mitglied: 36539
36539 Nov 21, 2008 at 16:52:34 (UTC)
Goto Top
Halo bastla,

funktioniert schon nicht unter XP.

Ordner "Links" in Favoriten = keine echo-Anzeige
Ordner "Links" in Favoriten gelöscht = keine echo-Anzeige

Ordner Links in Favoriten, unter Favoriten eine Test-Datei (URL) belassen = es wird das 1. Wort vom Datei/URL-Name angezeigt
Ordner Links in Favoriten gelöscht, in Favoriten eine Test-Datei (URL) belassen = es wird das 1. Wort vom Datei/URL-Name angezeigt

auf Vista hab ich dann nicht mehr gestestet.

Ich werd noch irre - Anscheinend gibt es in vielen Befehlsoptionen Unterschiede zwischen XP und Vista.

gruß
onegasee59
Member: bastla
bastla Nov 21, 2008 at 18:55:38 (UTC)
Goto Top
Hallo onegasee59!

Ja, das "delims=" (um den kompletten Dateinamen anzuzeigen) für die "for"-Schleife fehlt - allerdings war der Code dazu gedacht, in Vista herauszufinden, welche Datei denn nun eigentlich gezählt worden war ...

Grüße
bastla
Mitglied: 36539
36539 Nov 21, 2008 at 20:07:17 (UTC)
Goto Top
Ja, das "delims=" (um den kompletten Dateinamen anzuzeigen) für die "for"-Schleife fehlt...
OK, wird ja eh nicht benötigt., Namen müssen nicht gefunden werden nur ob Datei oder Ordner vorhanden.

allerdings war der Code dazu gedacht, in Vista herauszufinden, welche Datei denn nun eigentlich gezählt worden war ...
ahso, verstehe .... moment...

...ha - ich glaub mich laust der mit dem Zottelfell.
Ich fass es ja nicht. Da wird ne "desktop.ini" angezeigt.
Zum Teufel nochmal ich hab doch alles in den Ordneroptionen freigegeben. Wieso ist die da nicht sichtbar zu bekommen?
Unter XP gibt es keine "desktop.ini" unter Favoriten.

gruß
onegasee59
Member: bastla
bastla Nov 21, 2008 at 20:15:27 (UTC)
Goto Top
Hallo onegasee59!
Ich fass es ja nicht. Da wird ne "desktop.ini" angezeigt.
Darauf hätte ich eigentlich auch kommen können - dann hätte ich vielleicht "dir /a" empfohlen ... face-devilish

Vielleicht hattest Du unter XP keine, weil es wegen des ohnehin funktionierenden Löschens keine Notwendigkeit gab, per Explorer "nachzusehen".

Grüße
bastla
Mitglied: 36539
36539 Nov 21, 2008 at 20:43:38 (UTC)
Goto Top
Zitat von @bastla:
Hallo onegasee59!
> Ich fass es ja nicht. Da wird ne "desktop.ini" angezeigt. Darauf hätte ich eigentlich auch kommen können - dann hätte ich vielleicht "dir /a" empfohlen ... face-devilish
Ich habe jetzt von XP aus auf die Vista Favoriten geschaut per Explorer und siehe da, jetzt ist da auch die "desktop.ini" zu sehen.

Vielleicht hattest Du unter XP keine, weil es wegen des ohnehin funktionierenden Löschens keine Notwendigkeit gab, per Explorer "nachzusehen".
Habe es eben gerade nochmal gemacht - nichts - keine "desktop.ini" unter XP-Favoriten zu finden
Das erklärt jetzt auch die obigen Ergebnisse für %inhalt% bei XP und Vista

Ich komme jetzt zwar auch so mit dem Script weiter, weil ich nur bei %inhalt%==1 die ev.t vorhandene "desktop.ini" abfragen muss.
Dennoch Frage/Bitte:
Könntest Du mir die Scriptsequenz im Schnippsel auch so umstricken das eine evt. "desktop.ini" von vornherein abgefangen wird und nicht das Ergebnis verfälscht?

gruß
onegasee59
Member: bastla
bastla Nov 21, 2008 at 20:59:51 (UTC)
Goto Top
Hallo onegasee59!

Kannst Du mir die Sriptsequenz im Schnippsel auch so umstricken das eine evt. "desktop.ini" von vornherein abgefangen wird und nicht das Ergebnis verfälscht?
Falls Du damit meinst, es solle beim Zählen eine im übergebenen (Start-)Ordner enthaltene "desktop.ini" ignoriert werden, dann etwa so:
echo Set fso=CreateObject("Scripting.FileSystemObject"):Set f=Fso.GetFolder(WScript.Arguments(0)):WScript.Echo f.Files.Count+f.SubFolders.Count+fso.FileExists(WScript.Arguments(0)^& "\desktop.ini")>%NoFF%  
Grüße
bastla
Mitglied: 36539
36539 Nov 21, 2008 at 21:20:20 (UTC)
Goto Top
Hallo,
echo Set fso=CreateObject("Scripting.FileSystemObject"):Set f=Fso.GetFolder(WScript.Arguments(0)):WScript.Echo  
> f.Files.Count+f.SubFolders.Count+fso.FileExists(WScript.Arguments(0)^& "\desktop.ini")>%NoFF%  
> 
Nicht nur etwa - das wars....Treffer, versenkt...

bastla ist der Champion ... bastla ist der Champoin... face-smile

vielen vielen Dank

Gruß und schönes Wochenende.
onnegasee59