Como eu deixo o usuário configurar o diretório de saída para arquivos?

0

Estou escrevendo um script em lote muito básico para executar um hash MD5. Eu preciso pedir ao usuário um diretório de saída, em seguida, pedir uma saída de endereço IP e mapear uma letra de unidade para essa saída. Eu posso fazer com que ele pergunte, mas não envia o arquivo para o diretório escolhido. Ele o coloca no diretório local do qual o script foi executado. Ele também não irá mapear uma letra de unidade para ele. Alguém pode me ajudar a consertar isso? O hash MD5 deve ser enviado para o diretório escolhido pelo usuário.

@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
    
por Saemund 24.10.2016 / 23:33

1 resposta

0

Algumas explicações

Como funciona

set /p Folder=Enter folder's path: 

set /p IP=Enter computer's IP: 

Depois de defini-los com valores %Folder% e %IP% , você pode mapear o caminho remoto para uma letra

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

Aqui, mapeia para a letra x criando uma unidade X virtual, sempre com aspas duplas, porque a pasta pode conter espaços caracteres especiais .

Problema principal

dir %1 > investigation.txt

O investigation.txt sem o caminho especificado como c:\SomeFolder\investigation.txt criaria o arquivo no diretório atual, que está na pasta da qual o script foi executado.

Portanto, você deve especificar o diretório também, e não apenas o nome do arquivo, para salvar a saída em um arquivo no diretório no qual deseja salvá-lo.

Além disso, %1 é o primeiro argumento, ou seja, o valor do primeiro parâmetro passado ao arquivo, parâmetro é o que você digita após seu nome, ou seja, após chamar o arquivo, por exemplo, mybatchfile.bat parameter1 parameter2 %1 e %2 , respectivamente, dentro do arquivo de lote.

Então, acho que o script está errado, e você deve aprender a entender o que o conteúdo faz e corrigir algumas partes dele.

Notas

  • O IP deve estar no formato 192.168.1.1 , são quatro números, três pontos, para funcionar
  • Você pode usar o nome do host, que é o nome do computador, em vez de seu endereço, que é o IP
  • Para saber o nome do seu computador: echo %ComputerName%
por 26.10.2016 / 06:07