我正在编写一个非常基本的批处理脚本来运行 MD5 哈希。我需要它向用户询问输出目录,然后询问 IP 地址输出,然后将驱动器号映射到此输出。我可以让它询问,但它不会将文件输出到所选目录。它将其放在运行脚本的本地目录中。它也不会将驱动器号映射到它。有人能帮我解决这个问题吗?MD5 哈希应该发送到用户选择的目录。
@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
答案1
一些解释
怎么运行的
set /p Folder=Enter folder's path:
set /p IP=Enter computer's IP:
一旦设置了%Folder%
和%IP%
值,就可以将远程路径映射到字母
net use x: "\\%IP%\%Folder%"
x
这里它映射到创建虚拟驱动器的字母X
,始终用双引号引起来,因为文件夹可能包含特殊字符空格。
主要问题
dir %1 > investigation.txt
investigation.txt
没有指定路径的普通命令c:\SomeFolder\investigation.txt
将会在当前目录中创建文件,即在脚本运行的文件夹内。
因此,您还应该指定目录,而不仅仅是文件的名称,以便将输出保存到您希望保存的目录中的文件中。
此外,%1
是第一个参数,即传递给文件的第一个参数的值,参数是您在其名称后键入的内容,即在调用文件之后,例如,在批处理文件中mybatchfile.bat parameter1 parameter2
的值分别是%1
和。%2
所以我认为,脚本是错误的,你应该学会理解内容的作用,并纠正其中的某些部分。
笔记
- IP 的
192.168.1.1
格式应该是四个数字加三个点,这样才能正常工作 - 您可以使用主机名(即计算机的名称),而不是其地址(即 IP)
- 要了解您的计算机的名称:
echo %ComputerName%