Печать результатов пакетного файла в текстовый файл
Я создал простой пакетный файл для реорганизации набора файлов/папок. Он работает так, как должен, но мне нужно распечатать результаты в файле журнала. Мне нужно выводить результаты каждого действия (создание каталога, перемещение файла, переименование/удаление файла). Когда я использую команду → results.txt, все, что я могу получить, это "1 файл перемещен". тонны раз. Здесь код:
FOR %%a IN (C:\scans\*.txt) DO CALL :read %%~na
TREE /f >> tree.txt
@GOTO :EOF
:read
@set FILE=%1
FOR /f "tokens=1,2" %%b IN (%FILE%.txt) DO CALL :makeDir %%b %%c
@GOTO :EOF
:makeDir
@set ACCOUNT=%1
@set CHECK=%2
mkdir %ACCOUNT%
CALL :move
@GOTO :EOF
:move
MOVE %FILE%.gif %ACCOUNT%
REN %ACCOUNT%\%FILE%.gif %CHECK%.gif
DEL %FILE%.txt
@GOTO :EOF
Как я могу распечатать файл журнала (results.txt) всякий раз, когда действие выполняется?
EDIT: новый код w/echo:
@echo off
FOR %%a IN (C:\scans\*.txt) DO CALL :read %%~na
TREE /f >> tree.txt
@GOTO :EOF
:read
@set FILE=%1
FOR /f "tokens=1,2" %%b IN (%FILE%.txt) DO CALL :makeDir %%b %%c
@GOTO :EOF
:makeDir
@set ACCOUNT=%1
@set CHECK=%2
mkdir %ACCOUNT%
@echo Made directory for %ACCOUNT% >> results.txt
CALL :move
@GOTO :EOF
:move
MOVE %FILE%.gif %ACCOUNT%
@echo %FILE% moved to %ACCOUNT%
REN %ACCOUNT%\%FILE%.gif %CHECK%.gif
@echo %ACCOUNT%\%FILE% renamed %CHECK% >> results.txt
DEL %FILE%.txt
@echo %FILE% deleted. >> results.txt
@GOTO :EOF
Ответы
Ответ 1
Вы можете добавить этот фрагмент кода в начало своего пакетного файла:
@Echo off
SET LOGFILE=MyLogFile.log
call :Logit >> %LOGFILE%
exit /b 0
:Logit
:: The rest of your code
:: ....
Он в основном перенаправляет вывод метода :Logit
в LOGFILE
. Команда exit
предназначена для обеспечения выгрузки пакетов после выполнения :Logit
.
Ответ 2
Нет ничего плохого в перенаправлении стандартного файла на файл. Команды Move и mkdir ничего не выводят. Если вам действительно нужно иметь журнал следа этих команд, вам нужно явно указать эхо, чтобы указать, что вы только что выполнили.
Пакетный файл, пример:
@ECHO OFF
cd bob
ECHO I just did this: cd bob
Выполнить из командной строки:
myfile.bat >> out.txt
или
myfile.bat > out.txt
Ответ 3
Для печати результата в текстовый файл
мы можем следовать
echo "test data" > test.txt
Это создаст файл test.txt и напишет "тестовые данные"
Если вы хотите добавить
echo "test data" >> test.txt
Ответ 4
Для отображения результата командного файла в текстовом файле вы можете использовать
эта команда
chdir > test.txt
Эта команда перенаправляет результат на test.txt.
При открытии test.txt вы найдете текущий путь каталога в файле test.txt
Ответ 5
Шаг 1: просто поместите весь необходимый код в файл "MAIN.BAT".
Шаг 2. Создайте еще один файл bat, скажем MainCaller.bat, и просто скопируйте/вставьте эти 3 строки кода:
REM THE MAIN FILE WILL BE CALLED FROM HERE..........
CD "File_Path_Where_Main.bat_is_located"
MAIN.BAT > log.txt
Шаг 3: просто дважды щелкните "MainCaller.bat".
Все выходные данные будут записаны в текстовый файл с именем "log".
Ответ 6
Вы пытались переместить DEL% FILE%.txt% после того, как @echo% FILE% удалено. → results.txt, чтобы он выглядел следующим образом:
@echo %FILE% deleted. >> results.txt
DEL %FILE%.txt