Первое решение, основанное на комментарии @Ken White, по его словам, tree /A
отлично работает и правильно отображается в блокноте со шрифтом Consolas по умолчанию.
@echo off
Set "PathFolder=C:\temp"
Set "LogFile=C:\temp\Tree_Result.txt"
Rem simply pipe tree output to skip the two lines in the header
Tree "%PathFolder%" /F /A | more +2>"%LogFile%"
If Exist "%LogFile%" Start "" "%LogFile%"
Вывод выглядит так:
C:\TEMP
| 1155.tif
| check.txt
| filetest.txt
| InitJsonInSvc.dat
| InitJsonOutSvc.dat
| test.txt
| Tmp_Output.txt
| Tree_Output.txt
| Tree_Result.txt
|
+---Exiland Backup
| parametre.ini
|
\---Test
| parametre.ini
|
+---Exiland Backup
| parametre.ini
|
\---Nouveau dossier
b.txt
c.txt
parametre.ini
vide.ini
Второе решение, которое я создал и протестировал на своей французской версии windows 10 (32 бита), похоже на гибридный код:
<!-- :
@echo off
Title Replace unwanted Characters in the command Tree and save it into file by Hackoo 2019
setlocal enableExtensions enableDelayedExpansion
::ÿþ
set "cp="
for /F "tokens=2 delims=:." %%a in ('chcp') do set "cp=%%~a"
if not defined cp set "cp=850"
>nul chcp 65001
Set "PathFolder=C:\temp"
Set "TmpFile=C:\temp\Tmp_Output.txt"
Set "LogFile=C:\temp\Tree_Output.txt"
PowerShell ^
Tree "!PathFolder!" /F ^| Select-Object -Skip 2 ^| Set-Content !TmpFile! -Encoding unicode;
cscript //nologo "%~f0?.wsf" //job:ReplaceString "!TmpFile!" "�" " ">"!LogFile!"
If Exist "!LogFile!" Start "" "!LogFile!"
endlocal
>nul chcp %cp%
exit /b
--->
<job id="ReplaceString">
<script language="Vbscript">
Dim fso,File,Char,ReplaceChar,ReadAll
Set FSO = CreateObject("Scripting.FileSystemObject")
InputFile=WScript.Arguments(0)
Char=WScript.Arguments(1)
ReplaceChar=WScript.Arguments(2)
Set oFile = FSO.OpenTextFile(InputFile, 1, False, -1)
strData = oFile.ReadAll
WScript.echo(Replace(strData,Char,ReplaceChar))
</script>
</job>
Так что яполучил в качестве выходного текста, как это:
C:\TEMP
1155.tif
check.txt
filetest.txt
InitJsonInSvc.dat
InitJsonOutSvc.dat
test.txt
Tree_Result.txt
Exiland Backup
parametre.ini
Test
parametre.ini
Exiland Backup
parametre.ini
Nouveau dossier
b.txt
c.txt
parametre.ini
vide.ini