A variável date (l.8) é um argumento que deve ser passado vi...

Próximas questões
Com base no mesmo assunto
Q48457 Programação
Imagem 005.jpg

A automação de tarefas por meio de programas escritos em linguagens scripts pode minimizar erros de operação e agilizar as tarefas, tanto do usuário quanto do administrador. Considerando o código acima, julgue os itens a seguir.

A variável date (l.8) é um argumento que deve ser passado via linha de comando.
Alternativas

Comentários

Veja os comentários dos nossos alunos

As variaveis de linha de comando são recuperadas no script BAT como: %1, %2, ....

Na questão, date apresenta-se como %date% o que indica ser uma variável de ambiente windows, assim como %temp%, %path%, %windir%

analisando o codigo:

________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

for /f "tokens=1-5 delims=/ " %%d in (%date%) do move %%f %%e-%%f-%%g.txt

________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________

rem | del *.*: -> comentario. torna o del *.* sem efeito. o rem sempre vem seguido de pipe para indicar o que esta sendo comentado

for %%F in (*.*) do (........) -> for loop. em batch, for VAR%% in (pasta) é um for loop que percorre todos arquivos (*.*) no diretorio atual

 %%F é a variavel que representa os arquivos. por que %%F e nao %%f? batch scripting/windows nao era case sensitive? sim. exceto para Strings e dados.

Batch file scripts are not case-sensitive, although strings and data are. The file is controlled by a list of commands separated into lines which are run like normal commands would be at the Command Prompt, although some functionality is different.

https://en.wikibooks.org/wiki/Windows_Programming/Programming_CMD

if %%~zF LSS 1 (...) -> if verificando se tamanho do arquivo atual émenor do q 1 byte. SIM. %%~zF REPRESENTA O TAMANHO DO ARQUIVO ATUAL. no batch, z é um modificador de propriedades do arquivo. combinado com a variavel (no caso %%F), busca o tamanho do arquivo (em bytes, claro). o til (~) é o concatenador de var + modificador. LSS 1 significa "less than 1".

o else () entra quando o arquivo nao é menor do q 1 byte

if not "%%F" == "%1" (.........) -> esse if verifica se o arquivo %%F nao é igual ao 1° argumento declaerado no script. logo, os argumentos sao passados por essa logica: "%2", "%3" etc

for /f -> for loop para processar o output de comandos ou arquivos (linha por linha). 

for /f "tokens=1-5" -> o for loop processa a passagem por tokens, com um parsing de cada linha do arquivo. 1-5 define quais partes sao consideradas tokens distintos. "tokens=1-5" divide as linhas do arquivo em tokens, com os tokens de 1 a 5 processados individual. 

ex.: for /f "tokens=1-3" com um arquivo texto com uma linha:

conquanto porquanto portanto contudo contanto

vai ser parseado:

token 1: conquanto 

token 2: porquanto 

token 3: portanto

for /f "tokens=1-5 delims=/ " -> delims indica caracter delimitador. no caso, /

for /f "tokens=1-5 delims=/ " %%d in (%date%) do move %%f %%e-%%f-%%g.txt -> com os tokens extraídos (tokesn=1-5)e o delimitador delims (delims=/ "), o comando pega a data atual (%%d in *%date%) e renomea arquivo %%F para um formato seguindo o padrao estabelecido por tokens=1-5 de acordo com o parsing das linhas do arquivo. %%e-%%f-%%g.txt segue o formato de data dia-mês-ano. 

quanto à resposta, é errada.

a vairavel %date% nao precisa de argumento porque refere a uma variavel do sistema q contém a data atual consoante o formato de data no windows

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo