【问题标题】:Copy relative paths of some files and other files in subdirectories to a text file将子目录中某些文件和其他文件的相对路径复制到文本文件
【发布时间】:2015-05-07 10:30:39
【问题描述】:

我有一个名为 source 的文件夹。它有一些 jpeg 文件和一些包含更多 jpeg 文件的子目录。我想复制文本文档“test.txt”中子目录中所有文件和其他文件的相对路径。例如,
我有文件,

a.jpg
b.jpg
c.jpg

和子目录

sub1/d.jpg
sub2/e.jpg

我想复制所有这些相对于我所在的当前文件夹的相对路径(就在源代码之外)

我想要的输出是:

source/a.jpg
source/b.jpg
source/c.jpg
source/sub1/d.jpg
source/sub2/e.jpg

【问题讨论】:

    标签: powershell cmd relative-path


    【解决方案1】:

    可能有更短的方法(尤其是两个替换),但这应该会有所帮助:

    从源文件夹内部:

    (gci -recurse *.jpg|Resolve-path -relative) -replace "\\","/" -replace "[.]/","source/" > test.txt
    

    从包含源文件夹的文件夹中:

    (gci -recurse "source\*.jpg"|Resolve-path -relative) -replace "\\","/" -replace "[.]/","" > test.txt
    

    gciGet-ChildItem 的别名

    【讨论】:

    • 你在哪里指定了“测试”文本文件来存储输出?
    • @pulp_fiction 更新了答案,只需将输出重定向到带有>的文件
    • 好的,我试过了,不行。它确实会生成一个名为 test 的空文本文件,仅此而已。
    • @pulp_fiction 请一步一步尝试,即gci -recurse *.jpg得到什么,gci -recurse *.jpg|Resolve-path -relative得到什么等等。该解决方案对我有用,很难从远处判断您的问题是什么。
    • 好的,我想通了。您的解决方案完美运行,但来自实际存在图像的文件夹内部。我的意思是,如果我从 source 文件夹中执行脚本,它会列出图像。但是,我正在寻找一点转折——我(我的脚本)在包含 source 文件夹的文件夹中。从这里我希望能够指定源文件夹的名称并“列出相对的.......在脚本所在的 test.txt 中”希望你能理解我。
    【解决方案2】:

    对于那些,Ocaso Protal 的回答(它应该打上正确的复选标记,因为它确实是正确的)不起作用,(虽然它应该,但对我来说没有,所以我稍微调整了一下)这是我调整后的版本。

    (gci -path source -recurse *.jpg|Resolve-path -relative) -replace "\\","/" -replace "[.]/","source/" > test.txt
    

    【讨论】:

      【解决方案3】:

      如果不要求路径分隔符,只针对问题中的cmd标签,可以直接使用这个,但是路径分隔符会是反斜杠,不是斜杠

      xcopy /l /s "source\*" "%temp%" | find "\" > test.txt
      

      编辑以适应 cmets

      我不确定这不是异常(powershell 不是我的领域),但是...

      xcopy /l /s "source\*" "%temp%" | find "\" | powershell -c "$input -replace '\\','/'" > test.txt
      

      【讨论】:

      • 这是个问题。我需要斜杠而不是反斜杠,因为要处理它的软件可以使用斜杠。如果以某种方式将反斜杠替换为斜杠...
      • 另外,我在 cmd 中运行了你的命令,它返回 find: invalid argument
      • @pulp_fiction,答案已更新。肯定有人会找到更好的方法。
      • @pulp_fiction,对我来说,Windows 原生 find 命令正在运行。也许您的路径中有另一个版本。试试"%windir%\system32\find.exe"
      • 我尝试了您的编辑版本,它似乎陷入了无限循环。等了半天,按ctrl+c,显示FIND: Parameter format not correct
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 2020-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多