Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Вариант 3. Берёте tee.exe (например, из комплекта GnuWin32 CoreUtils for Windows) и пользуете. Скажем, такое:
Скрытый текст
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set sLog=Log.log

if exist "%sLog%" del /f /q "%sLog%"

>nul chcp 1251
for %%i in ("%CD%\*.txt") do (
	copy "%%~i" "%%~dpni_copy%%~xi"
) |tee.exe -a "%sLog%"
pause |tee.exe -a "%sLog%"
>nul chcp 866

endlocal
exit /b 0
Конечно, такое себе…

Вариант 4. Пользуете PowerShell, в качестве tee.exe — командлет Tee-Object.

Цитата shadowbat:
вариант 2 не подходит, потому что лог совсем не совпадает с окном, »
Потому что этим кодом Вы на каждом очередном проходе цикла перезаписываете («> log.txt») лог-файл, созданный на предыдущем проходе цикла.


Кстати, я категорически не рекомендую проводить какие-либо манипуляции с именами файлов, над которыми производится цикл выборки «for». Дело в том, что выборка подходящих по маске файлов не делается сразу при входе, поиск очередного файла производится на каждом проходе (банальными FindFirstFile() на первом проходе и FindNextFile() на последующих). Посему при подобном коде на определённых наборах можно получить вовсе не то, что ожидалось (вплоть до бесконечного исполнения пакетного файла). Например, попробуйте исполнить приведённый Вами код на таком наборе файлов (на разделе с файловой системой NTFS):
Код: Выделить весь код
0001.txt
0001_b.txt
0002.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:32, 24-09-2019 | #2