gpt4 book ai didi

windows - 仅列出子目录而不是完整目录

转载 作者:可可西里 更新时间:2023-11-01 10:16:55 26 4
gpt4 key购买 nike

我正在使用 Windows 命令解释器的内部命令来获取当前目录和子目录中的所有文件:

dir /s /b /o:gn > output.txt

它给我这样的输出:

C:\ParentDir\CurrentDir\ChilderDir\AnApp.exe

我想要的是输出:

ChilderDir\AnApp.exe

如何获取没有当前目录路径的文件和目录列表?

最佳答案

此批处理代码可用于获取没有基本路径的目录和文件名列表。

@echo off
setlocal EnableExtensions EnableDelayedExpansion

rem The environment variable CD holds path of current directory without a
rem backslash at end, except the current directory is the root directory
rem of a drive. This must be taken into account to get current directory
rem path with a backslash at end.

if "%CD:~-1%" == "\" (
set "CurrentDirectory=%CD%"
) else (
set "CurrentDirectory=%CD%\"
)

rem Delete the output file in current directory if already existing.
if exist output.txt del /F output.txt

rem Get recursive the directory and file names not having system or hidden
rem attribute set and remove from each directory and file name the current
rem directory path. With DIR parameter /A directories and files with hidden
rem or system attribute would be also included in the list. The output file
rem output.txt is also in the list.

for /F "delims=" %%I in ('dir /B /S /O:GN 2^>nul') do (
set "FileNameWithFullPath=%%I"
echo !FileNameWithFullPath:%CurrentDirectory%=!>>output.txt
)

endlocal

要了解使用的命令及其工作原理,请打开命令提示符窗口,在其中执行以下命令,并仔细阅读为每个命令显示的所有帮助页面。

  • echo/?
  • endlocal/?
  • for/?
  • 如果/?
  • rem/?
  • 设置/?
  • setlocal/?

命令 DIR 处理 STDERR 的错误消息在没有找到当前目录中的无隐藏/系统目录或文件时被重定向到设备 NUL 使用 2>nul 抑制它,其中重定向运算符 > 必须在此处使用 ^ 转义以应用于 DIR 的执行 而不是在命令行中的无效位置被解释为命令 FOR 的重定向,这将导致执行时出现语法错误消息。另请参阅 Microsoft 文章 Using command redirection operators .

关于windows - 仅列出子目录而不是完整目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38159899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com