中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: Needs help in Files Backup Batch file 上一主题 | 下一主题
ngen
初级用户





积分 38
发帖 8
注册 2005-9-12
状态 离线
『楼 主』:  Needs help in Files Backup Batch file

How to create a batch file that appeals the copy file from original destination to copied destination, by using for, set, if and xcopy??? the file is drag from one directory to the batch file where the new directory located

2005-9-13 11:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ngen
初级用户





积分 38
发帖 8
注册 2005-9-12
状态 离线
『第 2 楼』:  

If a directory is supplied in a list of input parameters, the directory itself must be copied including all the files and subdirectories from that directory preserving their absolute paths. To supply the list of input parameters as selected files and directories, use mouse drag and drop action as depicted in figure below:





After the drag and drop action, the drive Q: directory structure with copied files and selected subdirectories should look as (in the figure below):



Your output should look similar to the lines in SAMPLE Screen Display (see word-wrapped listing below)
NB: Selected directories must be displayed before copying their content.
SAMPLE Screen Display:

DIRECTORY: ver_02
E:\Current Work\tmpITHW\2004_S2\ver_02\M-bkp.cmd -> Q:\Current Work\tmpITHW\2004_S2\ver_02\M-bkp.cmd
E:\Current Work\tmpITHW\2004_S2\ver_02\t.cmd -> Q:\Current Work\tmpITHW\2004_S2\ver_02\t.cmd
2 File(s) copied
E:\Current Work\tmpITHW\2004_S2\bkp.bat -> Q:\Current Work\tmpITHW\2004_S2\bkp.bat
1 File(s) copied
E:\Current Work\tmpITHW\2004_S2\Drv_Q.cmd -> Q:\Current Work\tmpITHW\2004_S2\Drv_Q.cmd
1 File(s) copied
E:\Current Work\tmpITHW\2004_S2\Rob van der Woude's Scripting Pages Batch Files, Rexx, KiXtart, Perl, VBScript.url -> Q:
\Current Work\tmpITHW\2004_S2\Rob van der Woude's Scripting Pages Batch Files, Rexx, KiXtart, Perl, VBScript.url
1 File(s) copied
E:\Current Work\tmpITHW\2004_S2\M-bkp.cmd -> Q:\Current Work\tmpITHW\2004_S2\M-bkp.cmd
1 File(s) copied
Press any key to continue . . .

2005-9-14 08:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 3 楼』:  

I don't think batch can support drag and drop action. forget it!



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2005-9-14 08:32
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
ngen
初级用户





积分 38
发帖 8
注册 2005-9-12
状态 离线
『第 4 楼』:  

Well...
Actually when you drag the file from point A, to point B. You put the dragged file on the batch file which is already in point B. The batch file will shows you the original directory of the file to the new directory of the file. Eg: "DIRECTORY: ver_02" on the top

2005-9-14 08:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 5 楼』:  

Re ngen:

      你的意思是说,在批处理运行过程中,将指定文件拖动到批处理所在的命令行窗口中,然后批处理继续运行,将此文件拷贝到批处理所在路径,并显示文件拷贝前后的完整路径吗?

      若是如此,则难点在于如何在拖动文件至命令行窗口后,激活批处理继续执行,使用 set /a 接受文件路径,需要按回车来确认,相信不是你所想看到的;而使用自动探测命令行缓冲区的程序(比如choice),则难以接受字符串。如果可以解决这个问题,那么我以上的问题假设就不会很难了。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-9-14 20:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
ngen
初级用户





积分 38
发帖 8
注册 2005-9-12
状态 离线
『第 6 楼』:  

yep, but still don't really know how 2 do it... because my lecturer didn't talk much about it.
I will send you an email, can you help me have a look please

2005-9-15 07:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 7 楼』:  

Re ngen:

      当然,你可以给我 Email ,地址是 <id>@163.com 或者 <id>@gmail.com ,请最好使用中文。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-9-15 22:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fdsiuha
高级用户




积分 587
发帖 302
注册 2005-7-25
状态 离线
『第 8 楼』:  

No,u perhaps misunderstood him.
he want to execute a batch file by draging it from windows of Explorer to the icon of the batch file.
just like drag a TXT file to Notepad.exe.
the batch will copy it to the current directory where the bacth file exist
(why should a batch file do such a stupid task?the only thing u sould do is press the CTRL when drag the file form window to window)

if dest path was designated,the batch file should get the whole source path,replace the drive,pass to the xcopy to built the dest directory.

i haven't seen his picture

[ Last edited by fdsiuha on 2005-9-17 at 11:31 ]



欢迎造访DOS的小屋!
http://risky.ik8.com
2005-9-17 11:23
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
ngen
初级用户





积分 38
发帖 8
注册 2005-9-12
状态 离线
『第 9 楼』:  

It just my lecturer requested to do it
can any1 help it???

2005-9-17 20:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
born2be
中级用户




积分 220
发帖 82
注册 2005-9-3
状态 离线
『第 10 楼』:  

You all misunderstood him.
He meant that the taget directories and files are to be dragged and dropped by a batch processing file whose directory is the destination directory. The drag and drop is not the WINDOWS conception. You are required to fulfil the task by only using for, set, if and xcopy.

But NGEN did not define his problem very clearly.

2005-9-18 14:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 11 楼』:  :

Re All:

      这就是语言在交流中产生的障碍了,因为各自的语言基础和文化背景不同,误解是难免的。好在我已通过邮件基本了解了 ngen 的意图。大致如下:

      从源路径(比如E:\Current Work\tmpITHW\2004_S2)向目标路径(比如Q:\)拷贝一个或多个文件(夹),并且要保留拷贝文件的从根目录起的目录结构,拷贝方式为用鼠标选中文件(夹)后拖放。但是因为直接拖放到目标路径会丢失源文件(夹)的目录结构,而直接拖放目录树,又会多拷贝一些冗余的没有选择的文件(夹)。所以决定将源文件(夹)拖放到目标路径中的一个批处理(比如M_bkup.cmd)中,将它们作为一个或多个命令行参数传递给批处理,通过 for/set/if 等命令分析这些参数,将它们所引用的文件(夹)通过 xcopy 拷贝到它所在的路径下(即Q:\),同时保留其目录结构。

      这确实是一个比较新颖的程序构思。目前,我已基本完成代码的编写,并交由 ngen 查阅,待 ngen 确定后,将以回复贴出全部代码。

[ Last edited by willsort on 2005-9-18 at 15:20 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-9-18 15:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fdsiuha
高级用户




积分 587
发帖 302
注册 2005-7-25
状态 离线
『第 12 楼』:  

哎呀,我还是糊涂的



欢迎造访DOS的小屋!
http://risky.ik8.com
2005-9-19 18:03
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 13 楼』:  

Re fdsiuha:

      你可以在测试目录创建一个批处理程序 test.bat ,其内容如下:
@echo off
echo copy file %1...
pause
然后,用鼠标任意选取一个文件,并拖动到此批处理程序的图标上放开。此时,就会发现 test.bat 被执行,显示选取文件的路径。

      ngen 要求这个 test.bat 可以拷贝这个选中文件到其所在目录,并且保留它在源盘的目录结构。这与某些文件备份程序设计需求相类似。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-9-19 18:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fdsiuha
高级用户




积分 587
发帖 302
注册 2005-7-25
状态 离线
『第 14 楼』:  

那我前面的理解是对的嘛!晕ing...



欢迎造访DOS的小屋!
http://risky.ik8.com
2005-9-22 00:01
查看资料  访问主页  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 15 楼』:  

Re All:

      因为 Ngen 兄以后没有反馈任何意见,我就将这个主题忘在脑后了。近日,在编写另一个文件名处理的程序时,遇到了一些问题,因此连带想起了这个程序,再次作了更新,代码如下。遗憾的是,它现在还无法处理选择拖放隐藏文件或文件夹的情况,这是for的缺憾,if exist虽然可以识别隐藏,但是却无法用于严谨的目录判定。不知道各位还有什么办法?
:: M-bkup.cmd - Backup files and directories preserving their full pathnames by Drag&Drop
:: Will Sort - 2005-09-18 - CMD@WinXP
::   Wrote according to request of Michael Ngen
::   Link: Chine DOS Union Forum - http://www.cn-dos.net/forum/viewthread.php?tid=16947
:: Update: 2005-10-26
@echo off & setlocal EnableExtensions
if not '%1'=='' goto GetPath

:Help
echo NO ACTION TAKEN
echo Usage: Drag and drop files or directories over this file.
echo.
goto End

:GetPath
for %%p in (%0) do set _base=%%~dpp

:Backup
for %%p in (%1.*) do echo File: %%~nxp && xcopy /d /f /g /h /k /r %1 %_base%%%~pp
for /d %%p in (%1.*) do echo Directory: %%~nxp && xcopy /d /e /f /g /h /i /k /r %1 "%_base%%%~pnxp"
if errorlevel 2 goto End
shift
if not '%1'=='' goto Backup

:End
pause
[ Last edited by willsort on 2005-10-26 at 12:58 ]



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-10-26 12:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: