Ich versuche eine Batch-Datei zu schreiben, die hauptsächlich zum Kopieren von Zielen verwendet wird. Jetzt möchte ich es schaffen, wo andere Benutzer es verwenden können, ohne die Verzeichnisse und Ziele bearbeiten zu müssen. Gibt es eine Möglichkeit für mich, die Batchdatei an die Stelle zu schreiben, an der sie angezeigt wird, und nach dem Verzeichnis zu fragen, das der Benutzer kopieren möchte, und nach dem Laufwerk, auf das er es kopieren möchte?
Dies ist, was ich jetzt für eine Weile benutze.
@echo off
:: variable
set backupdir="Destination"
set backupcmd=xcopy /e /h /f /y /v /c /i /r /g /k /d
echo.
echo +++ Backing Up Data +++
echo.
echo.
%backupcmd% "Directory\*.*" "%backupdir%\Data"
timeout /t 2
cls
echo Backup Complete
echo.
echo.
timeout /t 2
cls
echo.
echo +++ Now taking hidden and system attributes off of folders +++
echo.
echo.
echo.
attrib -s -h "Destination\Data"
echo.
echo.
timeout /t 3
Und gibt es eine Möglichkeit, dies mit xcopy zu verbessern?
windows
batch
batch-file
JustinD
quelle
quelle
set /?
und sehen, wie man es benutztSET /P variable=[promptString]
um Benutzereingaben zu erhalten.%0
(für das aktuelle Programm oder den aktuellen Befehl) und%1-%9
für übergebene Parameter. So können Sie eine neue Batch-Datei mit der Zeile erstellencall backup.bat c:\source c:\destination
und verwenden%1
zur Bezugsquelle und%2
zum Referenzziel. Keine Antwort, da keine Eingabeaufforderung verarbeitet wird. Robocopy ist auch ein großartiges Tool für Sicherungszwecke und gehört zur Standardinstallation von Windows 7.Antworten:
Es gibt ein paar Möglichkeiten:
1) Verwenden Sie Befehlszeilenargumente.
Der Benutzer würde es gerne ausführen
backup.bat c:\SourcePath d:\DestinationPath
Verwenden Sie dann% 1 und% 2 (usw.) in der Batchdatei, um die angegebenen Argumente zu verwenden.
So etwas wie
und
Mehr Info: Übergeben von Befehlszeilenparametern in einer Stapeldatei
2) Verwenden Sie die Eingabeaufforderungsfunktion (
/P
) vonSet
So fordern Sie den Benutzer zur Eingabe von Informationen auf, um die Variable mit folgenden Daten zu füllen:Beispiel:
SET /P variable=[promptString]
Sie könnten also etwas tun wie:
Wenn es zu diesen Zeilen im Stapel kommt, stoppt es und fordert den Benutzer zur Eingabe auf.
Mehr Infos von
set /?
:quelle
Sie können verwenden set / p
Ein Beispiel aus http://ss64.com/nt/set.html
Verwenden Sie den obigen Link, um weitere Optionen und Beispiele anzuzeigen. Sie können auch Set /? innerhalb der Eingabeaufforderung, um die Optionen anzuzeigen.
Denken Sie daran, dass interaktive Batch-Dateien sehr schnell chaotisch werden. Je nachdem, wie komplex Ihr Skript ist und wer die Zielgruppe ist, sollten Sie andere Möglichkeiten zur Programmierung ausprobieren. Wenn Sie mit VB vertraut sind, VBScript könnte einfacher zu programmieren sein und CScript kann verwendet werden, um es auf der Kommandozeile auszuführen.
quelle