无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5019|回复: 10
打印 上一主题 下一主题

求助诸位大大 批处理如何获取 含空格长文件名!!

[复制链接]
跳转到指定楼层
1#
发表于 2018-12-3 20:13:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 879792799 于 2018-12-5 20:10 编辑

如下代码我修改的! 实际使用中一直搞不定{含空格长文件名} 本人能力低微求高手帮忙修改下!

如下代码本意是拖动生成文件备份1 再拖动生成备份2。。。。实际使用中一直搞不定{含空格长文件名}
@echo &&setlocal enabledelayedexpansion

set file=%1
set fn="%~n1"
set fe="%~x1"
set bakDir=%CD%

if exist %bakDir%\%"fn"%%"fe"% (
  call :copyFileExist
) else (
  copy %"file"% %bakDir%\ /y
)

GOTO :EOF
:copyFileExist
set ext=1
:until_no_file
if exist %bakDir%\%fn%★★★★★BACK!ext!%fe% (
  set /a ext+=1 >nul
  goto :until_no_file
)
copy %file% %bakDir%\%fn%★★★★★BACK!ext!%fe%

GOTO :EOF











OLD------------------------------------------------------------------
诸位大大请教下
我想拖动文件到批处理上 在当前目录自动(请不要直接重命名原文件)复制此文件副本并且重命名源文件名添加BACK1
如果我再次拖动文件到批处理上 自动复制此文件并且重命名源文件名添加BACK2
如果我再再次拖动文件到批处理上 自动复制此文件并且重命名源文件名添加BACK3
.....
比如
我拖动1.WIM到批处理上 在同目录下生成 1.WIM的副本并且自动重命名为1-BACK1.WIM
我再次拖动1.WIM到批处理上 在同目录下生成 1.WIM的副本并且自动重命名为1-BACK2.WIM
我再再次拖动1.WIM到批处理上 在同目录下生成 1.WIM的副本并且自动重命名为1-BACK3.WIM
.......依次类推 只是备份不要覆盖以前的文件

补充1  7#遇到文件名中包含空格的文件 不起作用 求指点
2#
发表于 2018-12-3 21:08:20 | 只看该作者
程序可以  批处理不知道怎么写
回复

使用道具 举报

3#
发表于 2018-12-3 23:03:32 | 只看该作者
弄这么高端干嘛,Windows本来就有的功能,多粘贴几次不就好了,非要特定文件名,能认出来就行。。。

点评

哈哈 工作使用 怕搞错了回头没有存档就尴尬了 还要重头再来啊大大!  详情 回复 发表于 2018-12-4 05:55
回复

使用道具 举报

4#
 楼主| 发表于 2018-12-4 05:53:27 | 只看该作者
frg521 发表于 2018-12-4 01:38
之前发过2个几乎类似的帖子,不能改良吗?不过这个比以前的简单,前提前后缀就是  原文件名(-back数字).原 ...

好的 谢谢大大提醒  !!!好犀利的眼神 哈哈
回复

使用道具 举报

5#
 楼主| 发表于 2018-12-4 05:55:06 | 只看该作者
nttwqz 发表于 2018-12-3 23:03
弄这么高端干嘛,Windows本来就有的功能,多粘贴几次不就好了,非要特定文件名,能认出来就行。。。

哈哈 工作使用 怕搞错了回头没有存档就尴尬了 还要重头再来啊大大!
回复

使用道具 举报

6#
 楼主| 发表于 2018-12-4 06:17:30 | 只看该作者
frg521 发表于 2018-12-4 01:38
之前发过2个几乎类似的帖子,不能改良吗?不过这个比以前的简单,前提前后缀就是  原文件名(-back数字).原 ...

求指点错误  我自己修改后 出现无法多个备份 只能产生一个备份
还有错误就是遇见文件名字里面包含空格的无反应(比如 RRRR LLL.LSP就无反应)

@echo off &&setlocal enabledelayedexpansion

set file=%1
set fn=%~n1
set fe=%~x1
set bakDir=%cd%

if exist %bakDir%\%fn%%fe% (
  call :copyFileExist
) else (
  copy %file% %bakDir%\ /y
)
echo finished.
ping 127.1 -n 2 >NUL
GOTO :EOF

:copyFileExist
set ext=1
set ex=%BACK
:until_no_file
if exist %bakDir%\%fn%-!ext!.%fe% (
  set /a ext+=1 >nul
  goto :until_no_file
)
copy %file% %bakDir%\%fn%-!ex!!ext!%fe%
goto :EOF
回复

使用道具 举报

7#
发表于 2018-12-4 07:43:02 | 只看该作者
开源是互联网的精神
回复

使用道具 举报

8#
 楼主| 发表于 2018-12-4 17:32:57 | 只看该作者
frg521 发表于 2018-12-4 07:49
把原作者内容完全抄写,只改最后一行,添加在扩展名前,的数数字前固定数据

最后就是空格处理在一个完整 ...

我依照您的意思 修改一下 还差一点 求指教  遇到(1 23 .DWG类似带空格的文件任然无效)
@echo off &&setlocal enabledelayedexpansion

set file=%1
set fn="%~n1"
set fe="%~x1"
set bakDir=%CD%

if exist %bakDir%\%fn%%fe% (
  call :copyFileExist
) else (
  copy %file% %bakDir%\ /y
)
echo finished.
ping 127.1 -n 2 >NUL
GOTO :EOF

:copyFileExist
set ext=1
:until_no_file
if exist %bakDir%\%fn%-!ext!.%fe% (
  set /a ext+=1 >nul
  goto :until_no_file
)
copy %file% %bakDir%\%fn%-BACK!ext!.%fe%
goto :EOF
回复

使用道具 举报

9#
发表于 2018-12-4 18:59:26 | 只看该作者
路过拿分。
回复

使用道具 举报

10#
 楼主| 发表于 2018-12-4 19:57:32 | 只看该作者
frg521 发表于 2018-12-4 17:48
给所有文件调用处都加双引号,那些变量的!!前后%前后,所有位置,自己把执行命令代码前面加echo,变成显示 ...

谢谢大大热心指教!
回复

使用道具 举报

11#
 楼主| 发表于 2018-12-5 05:41:53 | 只看该作者
frg521 发表于 2018-12-4 17:48
给所有文件调用处都加双引号,那些变量的!!前后%前后,所有位置,自己把执行命令代码前面加echo,变成显示 ...

呵呵 谢谢 做了一个目前无缺点 待改进



@echo &&setlocal enabledelayedexpansion

set file=%1
set fn="%~n1"
set fe="%~x1"
set bakDir=%CD%

if exist %bakDir%\%"fn"%%"fe"% (
  call :copyFileExist
) else (
  copy %"file"% %bakDir%\ /y
)

GOTO :EOF
:copyFileExist
set ext=1
:until_no_file
if exist %bakDir%\%fn%★★★★★BACK!ext!%fe% (
  set /a ext+=1 >nul
  goto :until_no_file
)
copy %file% %bakDir%\%fn%★★★★★BACK!ext!%fe%

GOTO :EOF
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-3 01:11

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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