首页 » PHP » 正文

windows下如何使用DOS命令强制复制文件

2015-9-11 ·  13,434 views  ·  0 replies 

有的时候,我们可能需要替换某些目录下的一些文件,手动去一个个目录找的话,就会比较麻烦,这时候,就是我们程序员上场的时候了,程序虽然好写,但是dos命令并不是每个人都玩的转的,而且最令人厌烦的事是Linux和Dos命令差别极大,Linux上一条cp -f A B的命令,DOS下可不简单。
下面介绍一下DOS复制文件的命令:

xcopy C:\info.txt D:\  /Y

取消提示以确认要覆盖现有目标文件。

其中 C:\info.txt 表示原文件,D:\ 表示目标目录,/Y 表示一个可选择的参数,表示当我们在执行 xcopy C:\info.txt D:\ 的时候,如果 D:\ 下有同名文件,windows会询问你,是否要覆盖文件,这时候,我们输入Y就可以复制了,用命令行表示呢,就是在其后加上一个 /Y 的参数,以上这个命令就可以强制复制文件了,更详细的DOS拷贝命令,详见下面链接:

http://www.cnblogs.com/yank/p/3926643.html

说完了DOS命令,再来谈谈,程序如何执行,这里拿PHP举例,毕竟是老本行
PHP执行命令有一个函数exec(),将命令输入到里面就可以了,比如:

<?php
$cmd = "xcopy C:\info.txt D:\  /Y";
exec($cmd);

如果是同一目录下,又该怎么写呢, 这里举个特殊例子,有一个名字叫做170tu的目录,其实就是以数字开头的目录

<?php
$cmd = "xcopy .\a.txt .\170tu\  /Y";
exec($cmd);

170tu是程序当前目录下的一个子目录,执行之后,发现没有任何变化,单拿出来这条命令,手动去执行,却发现可以执行成功,哪里出错了呢?
这是不妨打印一下

<?php
$cmd = "xcopy .\a.txt .\170tu\  /Y";
echo $cmd;
die; // 打个断点
exec($cmd);

输出结果如下:

xcopy .\a.txt .xtu\  /Y

你发现.\170变成了.x,如上 \ 会按照ANSI编码表转义能转义的字符,因此上面的命令要换成以下:

$cmd = "xcopy .\\a.txt .\\170tu\\  /Y";

这样就不会出现转义的错误了,当然Linux下用/表是地址分割符,这样的区别也得留意

«上一篇: :下一篇»
  1. 还没有任何评论,你来说两句吧

Leave a reply