Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否使用Powershell创建多个文件?_Powershell_Cmd - Fatal编程技术网

是否使用Powershell创建多个文件?

是否使用Powershell创建多个文件?,powershell,cmd,Powershell,Cmd,从中,我可以创建多个文件a.txt、b.txt、,z、 txt。在Bash中使用: touch {a..z}.txt 或152与: touch {{a..z},{A..Z},{0..99}}.txt 我如何在Powershell中执行此操作? 我知道新条目a.txt,但是如果我想要上面的多个文件 出于好奇,对于Powershell,命令提示符(cmd.exe)中的等效命令是什么 1..5 | foreach { new-item -path c:\temp\$_.txt } foreach

从中,我可以创建多个文件a.txt、b.txt、,z、 txt。在Bash中使用:

touch {a..z}.txt
或152与:

touch {{a..z},{A..Z},{0..99}}.txt
我如何在Powershell中执行此操作? 我知道
新条目a.txt
,但是如果我想要上面的多个文件

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

1..5 | foreach { new-item -path c:\temp\$_.txt }
foreach
循环将针对1到5中的每个数字运行,并在所需路径中生成一个文件,其中该数字的名称将传递给命令(由
$\ucode>表示)

你也可以这样写:

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

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

此处的详细信息:

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

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

虽然没有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!"
)

很简单,看一下:

("Text1.txt","Text2.txt", "Text3.txt") | foreach { New-Item -Path "X" -Name "$_.txt" }
当然,您将用希望创建文件的路径替换X


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

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

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

在几次失败的尝试之后,我将上面的两个答案混合在一起,创建了名为[char][int].txt的文件:
1..5 | foreach{New Item-Path'X'-Name“abc$\.txt”}
,其中X是路径。另外,感谢问题的原作者,因为它非常简洁地描述了我试图解决的问题。

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

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

被否决,因为它没有显示任何尝试过的例子或研究成果。请包括您已经尝试过的内容以及您遇到的具体错误/问题。ATM只有带范围运算符的数值范围。
IIRC这是未来PS版本的一项功能。在windows中,该命令不起作用,因为它不区分外壳。不错的(+1),但只有0..9,而且
-WhatIf
有点像作弊;-)谢谢@LotPings。
-WhatIf
只是为了看看会发生什么。如果您确实想要创建文件,请删除
-WhatIf
。是的,但windows不允许使用不同大小写的相同文件名…是的,您是对的,@LotPings。我将删除大写字母。