使用 cmd 在 txt 文件中使用 "forward slash" 保存文件目录

Saving files directory with "forward slash" in a txt file with cmd

正如主题所建议的,我需要将一些文件的一些目录从一个文件夹保存到一个 txt 文件中,得到“正斜杠”。

所以,我用这个简单的字符串制作了这个 .bat:

dir *.* /a/b/s > F:/TEST/FilesList.txt

我在 F:/TEST 中放置了一个名为“MEDIA_02.mp4”的文件

所以在 txt 中我得到:

F:\TEST\MEDIA_02.mp4

我需要得到的结果是:F:/TEST/MEDIA_02.mp4(带正斜杠)。

我不是程序员,但我了解一些事情,我需要得到“正斜杠”,因为我需要使用 unrealengine 读取一些目录,而这无法识别路径中的“反斜杠”。

非常感谢大家的支持!

更新:不需要通过 cmd 进行,它也可以是另一种语言。目标是获取带有正斜杠的目录,然后由 unrealengine 读取。

一种方法是在写入文件之前用 SOLIDUS '/' 替换 REVERSE SOLIDUS '\' 字符。如果您使用的是受支持的 Windows 系统,则可以使用 PowerShell。

powershell -NoLogo -NoProfile -Command ^
    (Get-ChildItem -Filter '*.*').FullName ^| ForEach-Object { $_ -replace '\','/'} ^| Out-File './FilesList.txt' -Encoding ascii

我注意到问题中没有关于将输出限制为文件而不是目录的问题。对于 cmd,可以用 DIR /A:-D 完成。如果您只需要 PowerShell 中的文件,如果您使用的是 PowerShell 5.1+,请使用 Get-ChildItem -File -Filter '*.*'

Mofi 在评论中回复了这个解决方案:

I suppose that each backslash in in each file name must be escaped with one more backslash as that is the syntax for C++ strings. That was my thought. So the solution should be (for /F "delims=" %%I in ('dir /B /S 2^>nul') do set "FileName=%%I" & setlocal EnableDelayedExpansion & echo !FileName:\=\!& endlocal)>F:\TEST\FilesList.txt to have the file and directory names with two backslashes per \ in the text file. I recommend to use /A-D instead of just /A to exclude directories.

所以,完整的字符串是:

@echo off
(for /F "delims=" %%I in ('dir /B /S 2^>nul') do set "FileName=%%I" & setlocal EnableDelayedExpansion & echo !FileName:\=/!& endlocal)>F:\FilesList.txt

.bat读取所在文件夹中的文件,它获取路径并将其保存在.txt“F:\Fileslist.txt”中,而不是保存它使用 "\" 它保存它 "/".

再次感谢Mofi的解答!