gibt es eine Möglichkeit, ein Skript in VBS (oder einem anderen Programm) zu erstellen, das in jeder Festplattenpartition nach einer Datei sucht und dann den Speicherortordner der Datei öffnet, wenn die Datei gefunden wurde? Wenn ich also die Datei „rand.txt“ finden möchte, die sich auf dem Laufwerk H: in H:\stuff\texts\ befindet, sucht der Code in C:,D:,E:,F: und wenn er sie dann in H: findet, öffnet er den Ordner „texts“. Ich habe es mit cmd versucht, aber das funktioniert bei mir nicht wirklich …
Antwort1
Hier ist eine Batch-Lösung für Windows (kann zeitaufwändig sein):
@ECHO OFF >NUL
@SETLOCAL enableextensions disabledelayedexpansion
for %%G in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
if exist %%G:\NUL (
echo %%G: drive
for /F "tokens=*" %%H in ('where /r %%G:\ rand.txt 2>NUL') do (
echo %%H
explorer.exe /e,/select,"%%~fH"
)
)
)
@ENDLOCAL
@GOTO :eof
Stattdessen echo %%H
haben Sie den vollständigen Pfad zum Dateinamen ...
Bearbeiten: where /r %%G:\ rand.txt 2>NUL
(wichtig:) 2>NUL
um Fehlermeldungen zu vermeiden, ERROR: The system cannot find the file specified
wenn das Startverzeichnis nicht existiert und INFO: Could not find files for the given pattern(s)
wie in den nächsten Beispielen (fragmentarische Aufzählung):
d:\xxx>where /r C:\bat\ randx.txt
ERROR: The system cannot find the file specified.
d:\xxx>echo %errorlevel%
2
d:\xxx>where /r d:\bat\ randx.txt
INFO: Could not find files for the given pattern(s).
d:\xxx>echo %errorlevel%
1
d:\xxx>where /r d:\bat\ rand.txt
d:\bat\files\rand.txt
d:\xxx>echo %errorlevel%
0
d:\xxx>
Antwort2
In Powershell sollte es folgendermaßen funktionieren:
gwmi Win32_LogicalDisk | Select-Object -expand DeviceID | %{$drive = $_; $drive; ls "$drive\rand.txt" -recurse | %{ii (Split-Path $_)}}