找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 16825|回复: 14

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

[复制链接]
发表于 2021-11-29 12:14:44 | 显示全部楼层 |阅读模式
本帖最后由 5i365 于 2021-11-29 12:16 编辑

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

有没有简单的办法, 不使用  [  复制到别的地方, 再改名, 再移过来 ]的办法
 楼主| 发表于 2021-11-29 12:23:13 | 显示全部楼层
批处理有这个办法
echo F|(xcopy a.txt a1.bat)
发表于 2021-11-29 16:12:54 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
5i365 + 1

查看全部评分

发表于 2021-11-29 16:17:58 | 显示全部楼层
  1. @echo off
  2. for /l %%a in (1 1 10) do copy a.txt a%%a.txt
复制代码
批处理
 楼主| 发表于 2021-11-29 17:03:10 | 显示全部楼层
回复 3# for_flr


    你好, 感谢帮忙, 刚才把代码写到一个ps1文件里, 和a.txt放在一起, 右键使用powershel执行, 然后报错, 不知为什么
 楼主| 发表于 2021-11-29 17:04:41 | 显示全部楼层
回复 4# for_flr


    这个批处理试了一下, 可以成功执行
发表于 2021-11-29 17:05:34 | 显示全部楼层
本帖最后由 for_flr 于 2021-11-29 17:09 编辑

回复 5# 5i365


    笔误了,$a="a.txt"
a.txt需要加双引号
 楼主| 发表于 2021-11-29 17:22:51 | 显示全部楼层
本帖最后由 5i365 于 2021-11-29 17:27 编辑

回复 7# for_flr


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

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


描述简单点就是, 我只定义批处理或PS1文件前两行的文件名和份数, 然后双击后就直接复制N份文件名加了序号的文件
例如:
$a="中国人.txt"
$n=10
--------------
set a=中国人.txt
set n=10
发表于 2021-11-30 09:34:09 | 显示全部楼层
  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}
复制代码
#自定义文件名和循环次数,自动获取文件名和拓展名,每次循环复制在文件名后加递增数字。
 楼主| 发表于 2021-11-30 12:14:22 | 显示全部楼层
本帖最后由 5i365 于 2021-11-30 12:24 编辑

回复 9# for_flr


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

将编码改成ANSI就可以了,

请问如何将文件名的地方加个_, 例如变成
中国人_1.txt
 楼主| 发表于 2021-11-30 12:58:46 | 显示全部楼层
本帖最后由 5i365 于 2021-11-30 13:15 编辑

回复 9# for_flr


你好, 请问下面这个地方什么含义? 为什么不用引号括起来, 用+连接? 我试了+号$fn+$i+$fx, 结果就把+号带上了, 但是我试 $fn_$i$fx 没有把下划线带上, 结果文件名 全是序号了
$fn$i$fx
发表于 2021-11-30 15:24:05 | 显示全部楼层
回复 11# 5i365


    $fn"_"$i$fx下划线加双引号就好了。
 楼主| 发表于 2021-11-30 17:35:27 | 显示全部楼层
回复 12# for_flr


   
 楼主| 发表于 2021-11-30 17:42:35 | 显示全部楼层
回复 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
 楼主| 发表于 2021-12-1 08:45:56 | 显示全部楼层
回复 12# for_flr


    这样也可以  
${fn}_$i$fx
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 02:45 , Processed in 0.023033 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表