首页 > 解决方案 > Cmd - 使用命令行在子文件夹中创建文件的最简单方法

问题描述

有什么简单的方法可以只在 readme 子文件夹中创建文本文件我想创建一个read-me.txt包含内容 example@gmail.com的文件我不想一个一个打开文件夹分区中有数千个文件夹C:\management

│
├───employees
│    ├───1559ad36254x
│    │    ├───work
│    │    ├───logs
│    │    └───readme
│    └───ayu6734287as
│         ├───work
│         ├───logs
│         └───readme
├───acy7wr7grill
├───acsaagsdy345rchs
├───adarsyuewoli
├───adgw843brhe
├───ahbe67ts
├───…
└───…

是否有任何命令可以在我尝试使用此命令查找目录然后使用命令创建新文件的每个readme 子目录中创建文件readmeecho

cd C:\management & for /f %x in ('dir readme /a:d /s /b') do echo example@gmail.com>%x\read-me.txt

此命令正在运行,但需要花费太多时间,因为首先它会找到包含文件夹的所有路径readme

C:\management\employees\1559ad36254x\readme
C:\management\employees\ayu6734287as\readme
C:\management\acsaagsdy345rchs\random87as\readme
C:\management\zsaagsdy345rchs\fir87as\readme

之后它将在readme目录中创建一个新文件。是否有任何Powershell 或 Cmd命令可以找到路径然后创建文件然后找到下一个路径并创建文件?

标签: powershellcmdcommand-line

解决方案


使用 PowerShell 很容易做到这一点:

Get-ChildItem 'c:\management' -Directory -Recurse -Filter 'readme' |
New-Item -ItemType File -Path {$_.FullName} -Name readme.txt -Value 'example@gmail.com'

Get-ChildItem命令将递归获取名为 readme 的文件夹。结果将通过管道传送到 New-Item 命令,我们将在其中使用表达式指定路径并创建一个名为“readme.txt”的文件,内容为“example@gmail.com”

注意:缺少显式循环,可以这样写:

Get-ChildItem 'c:\temp' -Directory -Filter 'readme' -Recurse |
ForEach-Object{
    New-Item -ItemType File -Path $_.FullName -Name readme.txt -Value 'example@gmail.com'
}

但是,New-Item允许将表达式用于-Path参数,允许第一个更简洁的示例。


推荐阅读