使用 Powershell 创建多个文件?

问题描述 投票:0回答:12

这个答案我可以创建多个文件a.txt,b.txt,...,z.txt。在 Bash 中:

touch {a..z}.txt

或 152 与:

touch {{a..z},{A..Z},{0..99}}.txt

如何在 Powershell 中执行此操作? 我知道

New-Item a.txt
,但是如果我想要多个文件,如上所述?

出于好奇,命令提示符 (cmd.exe) 中的等效命令是什么?

powershell cmd
12个回答
13
投票

对于 Powershell:

1..5 | foreach { new-item -path c:\temp\$_.txt }

foreach
循环将对 1 到 5 中的每个数字运行,并在所需路径中生成一个文件,并将该数字的名称传递给命令(由
$_
表示)

你也可以写成:

%{1..5} | new-item c:\temp\$_.txt

对于cmd:

for /L %v in (1,1,5) do type nul > %v.txt

更多信息在这里:cmd/批量循环


3
投票

不如 bash 简洁,但可以做到。

@(97..(97+25)) + @(48..(48+9)) |
    ForEach-Object { New-Item -Path "$([char]$_).txt" -WhatIf }

另一种方式...

@([int][char]'a'..[int][char]'z') + @([int][char]'0'..[int][char]'9') |
    ForEach-Object { New-Item -Path "$([char]$_).txt" -WhatIf }

还有一个...

function rng { @($([int][char]$args[0])..$([int][char]$args[1])) }

(rng 'a' 'z') + (rng '0' '9') |
    ForEach-Object { New-Item -Path "$([char]$_).txt" -WhatIf }

如果您迫切希望在 cmd.exe shell 中执行此操作,这可能会起作用。当看起来生成了正确的命令时,删除或注释掉

echo
行,并从下一行中删除
rem

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "CLIST=abcdefghijklmnopqrstuvwxyz0123456789"
FOR /L %%i IN (0,1,35) DO (
    CALL SET "S=%%CLIST:~%%i,1%%.txt"
    echo TYPE NUL ^>"!S!"
    rem TYPE NUL >"!S!"
)

3
投票

@Emilson Inoa 你的解决方案非常巧妙;名称中有一个拼写错误,我确信您的意思是排除数组中的扩展名。你最终会得到

("Text1", "Text2", "Text3") | % {ni -Path "/path/to/dir" -Name "$_.txt"}

2
投票

对于字母,在 PowerShell 中,使用:

97..( 97+25 ) | foreach { new-item $env:temp\$( [char]$_ ).txt }

2
投票

很简单,看一下:

("Text1.txt","Text2.txt", "Text3.txt") | foreach { New-Item -Path "X" -Name "$_.txt" }

当然,您将用您想要创建文件的路径替换 X。

如果需要进一步解释,请告诉我。


2
投票

在 PowerShell 中,您可以使用

New-Item

New-Item a.txt, b.txt, c.txt

然后点击 Enter


1
投票

在 powershell 中执行以下命令将在命令执行的目录中创建多个名为 Doc_.txt 的文件 (20)。

new-item $(1..20 | %{"Doc$_.txt"})

我认为这个命令最接近 bash 的等价命令:

touch Doc{1..20}.txt

1
投票

使用循环创建多个文件:

$count = Read-Host -Prompt "Enter Count"
$count 
for ($i=1 ; $i -le $count;($i++)){    
New-Item -Path "<Path>\<Filename>$i.txt"
}

要获得静态数字,请将计数变量删除为固定数字


0
投票

这并不能直接回答你的问题(因为这种方法需要提供每个文件扩展名),但更基本的方法当然是:

New-Item {a..z}.txt, {A..Z}.txt, {0..9}.txt

0
投票

经过几次失败的尝试后,我将上面的几个答案混合在一起,创建了标题为 [char][int].txt:

1..5 | foreach {New-Item -Path 'X' -Name "abc$_.txt"}
的文件,其中 X 是路径。另外,只是为了感谢问题的原作者,因为它非常简洁地描述了我试图解决的问题。


0
投票

1..1000000 | foreach {new-item -path C:\Testdata$_.txt}

这对我来说效果很好。在C:\Testdata文件夹中创建了1M文件。


0
投票

在 Windows PowerShell 中创建多个文件就是这么简单

ni file1.txt, file2.txt, file3.txt, "file 4 with spaces.txt", file5.txt

ni
仅代表新商品。

© www.soinside.com 2019 - 2024. All rights reserved.