moricool
Goto Top

Befehl fsutil behavior query disabledeletenotify in Batch-Datei weiterverarbeiten

Hallo,

schonmal im Voraus, ich bin ein Anfänger, was Batch Datein angeht.

Da ich gerne am tüftle, sammle ich gerne nützliche Befehle, um sie später, wenn ich das selbe Problem mal haben sollte, wieder anwenden kann.
Heute habe ich wegen meiner SSD mal ein wenig herumgeschaut und bin auf den Befehl zum Aktivieren von TRIM gekommen. Meine Idee war es nun eine Batch Datei zu schreiben, die "fsutil behavior query disabledeletenotify" ausführt. Wenn Trim aktiviert ist, sollte es das sagen und sich beenden. Andernfalls soll es fragen, ob TRIM aktivert werden soll und dies bei Zustimmung tun.

Meine Fragen/Probleme:

1. Leider hakt es bei der Verarbeitung der Ausgabe, die ich in einer Variable gespeichert habe (Für Kenner wohl nicht weiter verunderlich, nehme ich an).
Wenn ich "fsutil behavior query disabledeletenotify" eingebe kommt als Ausgabe ja DisableDeleteNotify = X heraus. Ansich will ich natürlich nur den Wert X weiter verwenden, das bekomme ich jedoch nicht hin, daher wollte ich mit der ganzen Zeile weiter arbeiten. Das funktionier jedoch nicht.

2. Ich habe die Zeile "for /f "tokens=*" %%i in ('fsutil behavior query disabledeletenotify ') do set Adresse=%%i" teils übernommen. Nun habe ich die Frage, wozu dieses tokens=* genau da ist.

Hier mein "kläglicher" Anfang:

@echo off
chcp 1252
echo "Trim" aktivieren oder aktivität testen  

for /f "tokens=*" %%i in ('fsutil behavior query disabledeletenotify ') do set Adresse=%%i  

if %Adresse%==DisableDeleteNotify = 0 goto aktiviert 

else goto Deaktiviert 

  
:aktivert
echo Trim ist aktiviert
pause
exit

:Deaktiviert
echo Trim ist deaktiviert. Soll es nun aktiviert werden? (y/n)
set x=

if %x%==y
fsutil behavior set DisableDeleteNotify 0
echo TRIM wurde aktivier!
pause
exit

if %x%==n
exit


Ich hoffe, das ist jetzt nicht alles murx gewesen und jemand kann mir helfen.
MfG, Marcus

Content-Key: 236989

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

Printed on: April 26, 2024 at 13:04 o'clock

Member: rubberman
rubberman May 01, 2014 updated at 22:12:13 (UTC)
Goto Top
Hallo Moricool, willkommen im Forum.

Ich habe die Zeile "for /f "tokens=*" %%i in ('fsutil behavior query disabledeletenotify ') do set Adresse=%%i" teils übernommen. Nun habe ich die Frage, wozu dieses tokens=* genau da ist.

Mit Hilfe von delims und tokens kann man den verarbeiteten Stream in Teilstrings aufteilen. Standard Trennzeichen (Delimiter) sind Leerzeichen und Tab. Tokens gibt an welche Teilstrings in die FOR Variablen wandern sollen. "tokens=*" ist vereinfacht gesagt eine Möglichkeit die ganze Zeile in die Variable zu packen (wobei hier ein "delims=" die bessere Wahl ist, aber so detailliert will ich jetzt nicht werden).
Um an deinen Wert zu kommen könntest du also mit "tokens=2 delims== " arbeiten. Delimiter sind dann = und Leerzeichen. Aufeinanderfolgende Delimiter werden wie ein einziger betrachtet, somit steht dein Wert im 2. Teilstring (also tokens=2).
Du kannst auch noch etwas anders vorgehen:
for /f "delims=" %%i in ('fsutil behavior query disabledeletenotify') do set /a %%i
Auf diese Weise erzeugst du eine Variable %DisableDeleteNotify% mit dem entsprechenden Wert.

Ungetestet also etwa so:
@echo off &setlocal
for /f "delims=" %%i in ('fsutil behavior query disabledeletenotify') do set /a %%i  

if %DisableDeleteNotify%==0 (
  echo Trim ist aktiviert
  pause
  goto :eof
)

set /p "x=Trim ist deaktiviert. Soll es nun aktiviert werden? (y/n) "  
if /i "%x%"=="y" (  
  fsutil behavior set DisableDeleteNotify 0
  echo Trim wurde aktiviert.
  pause
)

Grüße
rubberman
Member: colinardo
colinardo May 02, 2014 updated at 08:57:03 (UTC)
Goto Top
Hallo Marcus, Welcome.
Das hatte ich auch schon mal hier gepostet:
Festplatte klonen auf SSD
Vielleicht findest du für die anderen Bestandteile des Scripts auch Verwendung face-smile

Grüße Uwe
Member: Moricool
Moricool May 02, 2014 at 10:47:17 (UTC)
Goto Top
Hallo,

Vielen Dank euch beiden für die Schnelle Hilfe!
Aha, wieder was gelernt, sehr nützlich face-smile

Ich habe jetzt angefangen, mir eine Batch Datei zu erstellen, in der ich zwischen verschiedenen Funktionen wählen kann. Die werde ich jetzt kontinuierlich erweitern.

@colinardo:

Genau diese Funktionen habe ich auch alle umschalten wollen! perfekt.
Nur habe ich jetzt bezüglich der Prefetch und Superprefetch gelesen, dass sie, wenn man noch eine normale HDD nutzt, auf welcher Programme installiert sind, besser aktiviert bleiben sollten.

Ist es möglich via CMD zu identifizieren, ob es sich um eine SSD handelt oder nicht?

Danke schonmal im Voraus,
Marcus
Member: colinardo
colinardo May 02, 2014 updated at 11:27:07 (UTC)
Goto Top
Zitat von @Moricool:
Ist es möglich via CMD zu identifizieren, ob es sich um eine SSD handelt oder nicht?

kleines Autoit Skript zur EXE kompiliert, feddich:
http://www.autoitconsulting.com/site/scripting/detect-an-ssd-disk-using ...

Man könnte zwar auch via wmic diskdrive die Caption eines Laufwerks auf das vorhanden sein des Wortes SSD prüfen, jedoch ist das alles andere als sicher, denn nicht jeder Hersteller baut in die Bezeichnung des Laufwerks diesen Begriff mit ein.

Grüße Uwe