![]() |
сохранить копию вывода консольного окна в txt файл
есть код
Код:
for %%i in ("%CD%\*.txt") do ( copy "%%i" "%%~dpni_copy%%~xi" ) консольное окно выдаёт:
Код:
D:\>for %i in ("D:\*.txt") do (copy "%i" "%~dpni_copy%~xi" ) как сохранить копию вывода консольного окна в txt файл ? желательно с %date% %time% перед каждой строкой, но можно и без этого вариант 1 не подходит, потому что в консольном окне перестаёт писать произведённые действия. (но сам лог файл нормальный, подходящий) вариант 2 не подходит, потому что лог совсем не совпадает с окном, да еще и в самом окне не пишет "скопировано файлов 1" вариант 1
Код:
>"log.txt" (for %%i in ("%CD%\*.txt") do (copy "%%i" "%%~dpni_copy%%~xi")) окно Код:
D:\>(for %i in ("D:\*.txt") do (copy "%i" "%~dpni_copy%~xi" ) ) 1>"log.txt" Код:
D:\>(copy "D:\111.txt" "D:\111_copy.txt" ) вариант 2
Код:
for %%i in ("%CD%\*.txt") do ( copy "%%i" "%%~dpni_copy%%~xi" > log.txt ) окно Код:
D:\>for %i in ("D:\*.txt") do (copy "%i" "%~dpni_copy%~xi" 1>log.txt ) Код:
Скопировано файлов: 1. |
Вариант 3. Берёте tee.exe (например, из комплекта GnuWin32 CoreUtils for Windows) и пользуете. Скажем, такое:
Скрытый текст
Код:
@echo off Вариант 4. Пользуете PowerShell, в качестве tee.exe — командлет Tee-Object. Цитата:
Кстати, я категорически не рекомендую проводить какие-либо манипуляции с именами файлов, над которыми производится цикл выборки «for». Дело в том, что выборка подходящих по маске файлов не делается сразу при входе, поиск очередного файла производится на каждом проходе (банальными FindFirstFile() на первом проходе и FindNextFile() на последующих). Посему при подобном коде на определённых наборах можно получить вовсе не то, что ожидалось (вплоть до бесконечного исполнения пакетного файла). Например, попробуйте исполнить приведённый Вами код на таком наборе файлов (на разделе с файловой системой NTFS): Код:
0001.txt |
Цитата:
Код:
Скопировано файлов: 1. Цитата:
|
|
shadowbat
Код:
@echo off |
Цитата:
по подобию решения от alpap сделал код для первого сообщения: Код:
@for %%i in ("%CD%\*.txt") do ( call :# "%%i" "%%~dpni_copy%%~xi") Код:
D:\>(call :# "D:\111.txt" "D:\111_copy.txt" ) Код:
24.09.2019-15:45:29,35 copy "D:\111.txt" "D:\111_copy.txt" это максимум, который можно вытянуть из окна в данной ситуации? |
Цитата:
Цитата:
Цитата:
|
shadowbat, используйте robocopy.
|
кривенький вариант на xcopy с костылями, тоже не идеально, пишет "Copied files: 1" даже если %errorlevel% <> 0 (например нет файла)
пока вердикт такой : штатными средствами нельзя отображать одно и то же в консоли и в логе файла, либо возможно с длиннющими костылями код Код:
@for %%i in ("%CD%\*.txt") do ( call :# "%%i" "%%~dpni_copy%%~xi") Код:
D:\>(call :# "D:\111.txt" "222.txt" ) Код:
D:\111.txt Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Время: 18:05. |
Время: 18:05.
© OSzone.net 2001-