阅读背景:

如何用批处理命令判断2个文件名是否相同?

来源:互联网 
C:\Target
C:\Target\1.txt
S:\Source\1.txt

如何用批处理命令判断这两个文件名一样?
当一样时,不做任何操作;
当不一样时,覆盖拷贝S:\Source\文件夹里的所有内容到C:\Target\文件夹里。

10 个解决方案

#1


[code=BatchFile]rem 取文件名
dir /b /a-d
for /f "delims=" %i in ('dir /s /a-d /b') do echo %~nxi
rem 判断相等
if "%str1%"=="%str2%" (echo yes) else (echo no)
rem 拷贝文件夹
xcopy src dest\ /e /y /c[/code]

#2


看不太明白,在哪里把文件名赋给了str1和str2?

我的目的是这样的,C:\Target和S:\Source这2个文件夹中的内容应该是一样的,如果S:\Source中的内容变了,就要将S:\Source中的全部文件拷贝去C:\Target中,所以我在C:\Target和S:\Source建了一个txt的文件用来标识版本(根据文件名),整个文件夹里只有这一个文件是txt格式的。
所以这个批处理要执行的内容就是以下内容:

1. 获取C:\Target中的txt文件的文件名
2. 判断在S:\Source中是否有存在和C:\Target中的txt文件同名的文件
3. 如果有同名的文件,则不做任何操作,如果没有同名的文件,覆盖拷贝S:\Source\文件夹里的所有内容到C:\Target\文件夹里

#3


只提供思路,又不是写的批处理啥,,,

[code=BatchFile]@echo off
for /f "delims=" %%i in ('dir S:\Source\*.txt /b') do set src=%%i
for /f "delims=" %%i in ('dir C:\Target\*.txt /b') do set dest=%%i
if not "%src%"=="%dest%" del C:\Target\*.txt /f /q&&xcopy S:\Source C:\Target\ /e /y /c[/code]

#4


@echo off

for /r s:\source %%f in (*.txt) do (
 if not exist c:\target\%%~nf%%~xf copy %%f c:\target
)



同步目录其实可以用 robocopy.exe s:\source c:\target *.* 命令。
robocopy.exe 自 vista 开始由系统自带,其它系统可以从微软下载(包含在 resource kit 中)。robocopy.exe 不但可以匹配文件名,还可以匹配文件修改的时间。

#5


xcopy /d /y "S:\Source\*.*" "C:\Target"

#6


能告诉我在哪里可以查到/e /y /c这些参数的含义吗?
我在百度上搜都不知道该搜哪些关键词......

#7


直接在命令行中运行 XCOPY /?
/E 表示复制目录下的子目录,包括空的子目录
/Y 表示在 XCOPY 覆盖原有的文件时不提示
/C 表示如果复制出现错误,继续复制下一个文件

#8


找到了最简单的方法:
不需要建一个txt文件来标识版本

xcopy /Y /e "s:\source\*.*" "c:\target" /zfdi

后面的参数d就可以根据文件是否更新就行Copy的操作.

谢谢大家的帮助!

#9


本帖最后由 ljc007 于 2010-06-15 21:40:57 编辑
https://www.cn-dos.net/forum/viewthread.php?tid=51623
这个帖子也是你发的?现在学会看帮助文档了吧?
^_^

Q: 在CSDN上发帖提问后怎样结帖给分?

A: 打开你的帖子→点击帖子左上角的“结贴”按钮→在回帖用户的得分框里面输入分数→点击帖子左下角的“结贴给分”

结贴完成后,系统将返回帖主该帖50%的可用分。

#10


(*^__^*) 嘻嘻……
网速不好,我一定尽快结贴

.txt
S:\Source
C:\Target\1.txt
S:\Source\1.txt

如何用批处理命令判断这两个文件名一样?
当一样时,不做任何操作;
当不一样时,覆盖拷贝S:\Source\文件夹里的所有内容到C:\Target\文件夹里。

10 个解决方案

#1


[code=BatchFile]rem 取文件名
dir /b /a-d
for /f "delims=" %i in ('dir /s /a-d /b') do echo %~nxi
rem 判断相等
if "%str1%"=="%str2%" (echo yes) else (echo no)
rem 拷贝文件夹
xcopy src dest\ /e /y /c[/code]

#2


看不太明白,在哪里把文件名赋给了str1和str2?

我的目的是这样的,C:\Target和S:\Source这2个文件夹中的内容应该是一样的,如果S:\Source中的内容变了,就要将S:\Source中的全部文件拷贝去C:\Target中,所以我在C:\Target和S:\Source建了一个txt的文件用来标识版本(根据文件名),整个文件夹里只有这一个文件是txt格式的。
所以这个批处理要执行的内容就是以下内容:

1. 获取C:\Target中的txt文件的文件名
2. 判断在S:\Source中是否有存在和C:\Target中的txt文件同名的文件
3. 如果有同名的文件,则不做任何操作,如果没有同名的文件,覆盖拷贝S:\Source\文件夹里的所有内容到C:\Target\文件夹里

#3


只提供思路,又不是写的批处理啥,,,

[code=BatchFile]@echo off
for /f "delims=" %%i in ('dir S:\Source\*.txt /b') do set src=%%i
for /f "delims=" %%i in ('dir C:\Target\*.txt /b') do set dest=%%i
if not "%src%"=="%dest%" del C:\Target\*.txt /f /q&&xcopy S:\Source C:\Target\ /e /y /c[/code]

#4


@echo off

for /r s:\source %%f in (*.txt) do (
 if not exist c:\target\%%~nf%%~xf copy %%f c:\target
)



同步目录其实可以用 robocopy.exe s:\source c:\target *.* 命令。
robocopy.exe 自 vista 开始由系统自带,其它系统可以从微软下载(包含在 resource kit 中)。robocopy.exe 不但可以匹配文件名,还可以匹配文件修改的时间。

#5


xcopy /d /y "S:\Source\*.*" "C:\Target"

#6


能告诉我在哪里可以查到/e /y /c这些参数的含义吗?
我在百度上搜都不知道该搜哪些关键词......

#7


直接在命令行中运行 XCOPY /?
/E 表示复制目录下的子目录,包括空的子目录
/Y 表示在 XCOPY 覆盖原有的文件时不提示
/C 表示如果复制出现错误,继续复制下一个文件

#8


找到了最简单的方法:
不需要建一个txt文件来标识版本

xcopy /Y /e "s:\source\*.*" "c:\target" /zfdi

后面的参数d就可以根据文件是否更新就行Copy的操作.

谢谢大家的帮助!

#9


本帖最后由 ljc007 于 2010-06-15 21:40:57 编辑
https://www.cn-dos.net/forum/viewthread.php?tid=51623
这个帖子也是你发的?现在学会看帮助文档了吧?
^_^

Q: 在CSDN上发帖提问后怎样结帖给分?

A: 打开你的帖子→点击帖子左上角的“结贴”按钮→在回帖用户的得分框里面输入分数→点击帖子左下角的“结贴给分”

结贴完成后,系统将返回帖主该帖50%的可用分。

#10


(*^__^*) 嘻嘻……
网速不好,我一定尽快结贴

.txt

如何用批处理命令判断这两个文件名一样? 如何用批处理命令



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: