[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 如何使用Powershell 将一个文件复制10份,文件名加后缀从1递增

本帖最后由 5i365 于 2021-11-29 12:16 编辑

请教如何使用Powershell 将一个文件复制10份,文件名加后缀从1递增
例如,文件为a.txt,复制后为a1.txt.......a10.txt

有没有简单的办法, 不使用  [  复制到别的地方, 再改名, 再移过来 ]的办法

回复 12# for_flr


    这样也可以  
${fn}_$i$fx

TOP

回复 12# for_flr


    你好, 为什么上面的三个变量能并在一起用, 但是下面的, 两个变量并在一起, 就报错

$filename="中 国 人.txt"
$n=5
$fn=[system.io.path]::getfilenamewithoutextension($filename)
$fn #可以回显
$fx=[system.io.path]::getextension($filename)
$fx #可以回显
$fn$fx #不能回显,报错
for ($i=1;$i -le $n;$i++){cp $filename $fn$i$fx} #这里的三个变量能并在一起,不报错

cmd /c pause

TOP

回复 12# for_flr


   

TOP

回复 11# 5i365


    $fn"_"$i$fx下划线加双引号就好了。

TOP

本帖最后由 5i365 于 2021-11-30 13:15 编辑

回复 9# for_flr


你好, 请问下面这个地方什么含义? 为什么不用引号括起来, 用+连接? 我试了+号$fn+$i+$fx, 结果就把+号带上了, 但是我试 $fn_$i$fx 没有把下划线带上, 结果文件名 全是序号了
$fn$i$fx

TOP

本帖最后由 5i365 于 2021-11-30 12:24 编辑

回复 9# for_flr


    $filename="中国人.txt"
我试上面的变量, 没有复制

将编码改成ANSI就可以了,

请问如何将文件名的地方加个_, 例如变成
中国人_1.txt

TOP

  1. $filename="test.mp3"
  2. $n=10
  3. $fn=[system.io.path]::getfilenamewithoutextension($filename)
  4. $fx=[system.io.path]::getextension($filename)
  5. for ($i=1;$i -le $n;$i++){copy-item $filename $fn$i$fx}
复制代码
#自定义文件名和循环次数,自动获取文件名和拓展名,每次循环复制在文件名后加递增数字。

TOP

本帖最后由 5i365 于 2021-11-29 17:27 编辑

回复 7# for_flr


    感谢, 现在可以了, 不过, 要根据名字中字母的长度, 手动改位置参数, 如何自动改?

另外, 如果是文件名是中文字, 那个位置参数怎样自动设置?


描述简单点就是, 我只定义批处理或PS1文件前两行的文件名和份数, 然后双击后就直接复制N份文件名加了序号的文件
例如:
$a="中国人.txt"
$n=10
--------------
set a=中国人.txt
set n=10

TOP

本帖最后由 for_flr 于 2021-11-29 17:09 编辑

回复 5# 5i365


    笔误了,$a="a.txt"
a.txt需要加双引号

TOP

回复 4# for_flr


    这个批处理试了一下, 可以成功执行

TOP

回复 3# for_flr


    你好, 感谢帮忙, 刚才把代码写到一个ps1文件里, 和a.txt放在一起, 右键使用powershel执行, 然后报错, 不知为什么

TOP

  1. @echo off
  2. for /l %%a in (1 1 10) do copy a.txt a%%a.txt
复制代码
批处理

TOP

本帖最后由 for_flr 于 2021-11-29 17:09 编辑
  1. $a="a.txt"
  2. for ($i=1;$i -le 10;$i++){copy $a (dir $a).name.insert(1,$i)}
复制代码
#insert(1,$i),这里控制1-10序号添加进文件名长度位置
1

评分人数

TOP

批处理有这个办法
echo F|(xcopy a.txt a1.bat)

TOP

返回列表