Jak pozwolić użytkownikowi ustawić katalog wyjściowy dla plików?

0

Piszę bardzo prosty skrypt wsadowy do uruchomienia skrótu MD5. Potrzebuję go, aby poprosić użytkownika o katalog wyjściowy, a następnie o adres IP, a następnie zamapować literę dysku na to wyjście. Mogę go zapytać, ale nie wypisuje pliku do wybranego katalogu. Umieszcza go w katalogu lokalnym, z którego skrypt został uruchomiony. Nie będzie też mapować litery dysku. Czy ktoś może mi pomóc to naprawić? Skrót MD5 należy wysłać do katalogu wybranego przez użytkownika.

@ECHO OFF
pause
REM This section prompts user for output location 

:start
CLS
set /p direct="Enter the directory output location: "

dir %1 %direct% > investigation.txt 
pause

REM 

set /p direct="Enter the IP output location: "

dir %1 > investigation.txt 
pause

REM Map share 
@echo Map Share
@echo off 
net use z: \\%1
pause

REM This section appends the date and time of the investigation. 
@Echo Date and Time 
@Echo off
date /T >> investigation.txt && time /T >> INVESTIGATION.TXT 
pause 

REM This step creates the MD5 hash 


@echo MD5 VALUE
@echo off 
MD5DEEP investigation.txt > Hash.txt


pause 

REM This step creates the SHA1 hash
echo SHA1 VALUE
@echo off 
SHA1DEEP investigation.txt >> Hash.txt  
pause
Saemund
źródło
Jak już mówiłem na Stack Overflow , wydajesz się być zdezorientowany, do czego %1jest używany. Jest to parametr przekazywany do pliku wsadowego podczas jego wywoływania.
DavidPostill
Dlaczego masz tagi bash i linux?
DavidPostill
Mówienie mi, że nie wiem, co robię, nie jest pomocne. Już to wiem. Potrzebuję rozwiązania, aby skrypt działał. Czy ludzie są tu zawsze tak nieprzydatni?
Saemund
Nie mam rozwiązania, ponieważ twoje pytanie nie jest jasne, co próbujesz zrobić. W twoim pliku wsadowym jest wiele błędów. Musisz znaleźć dobry materiał szkoleniowy.
DavidPostill

Odpowiedzi:

0

Kilka wyjaśnień

Jak to działa

set /p Folder=Enter folder's path: 

set /p IP=Enter computer's IP: 

Po ustawieniu ich za pomocą wartości %Folder%i %IP%można zmapować ścieżkę zdalną na literę

net use x: "\\%IP%\%Folder%"

Tutaj jest odwzorowany na literę xtworzącą wirtualny Xdysk, zawsze podwójny cudzysłów, ponieważ folder może zawierać spacje znaków specjalnych .


Główna kwestia

dir %1 > investigation.txt

Zwykły investigation.txtbez określonej ścieżki c:\SomeFolder\investigation.txtutworzyłby plik w bieżącym katalogu, czyli w folderze, z którego skrypt został uruchomiony.

Powinieneś więc również podać katalog, a nie tylko nazwę pliku, aby zapisać dane wyjściowe w pliku w katalogu, w którym chcesz go zapisać.

Co więcej, %1jest pierwszym argumentem, który jest wartość pierwszego parametru przekazanego do pliku, parametr jest co wpisać po nazwie, który jest po wywołaniu pliku, np mybatchfile.bat parameter1 parameter2„s wartości byłoby %1i %2odpowiednio w pliku wsadowym.

Myślę więc, że skrypt jest zły i powinieneś nauczyć się rozumieć, co robi zawartość, i poprawiać niektóre jej części.


Notatki

  • Adres IP powinien mieć 192.168.1.1format, czyli cztery liczby, trzy kropki, aby działał
  • Możesz użyć nazwy hosta, czyli nazwy komputera, zamiast jego adresu, czyli adresu IP
  • Aby poznać nazwę komputera: echo %ComputerName%

źródło