我有一个目录,其中直接有文件def func():
x= int(input())
while (x>1):
if x%2 == 0:
x = x//2
print(x)
elif x%2 != 0:
x= x*3+1
print(x)
func()
。
我只想将所有这些文件复制到C:\test1
到C:\test2
的任何子目录中。
需要编写一个Windows批处理文件才能执行此操作。任何帮助表示赞赏。
我尝试使用以下内容,但它不会在目标目录中递归搜索:
C:\test2
答案 0 :(得分:1)
示例使每个人都更容易理解任务的要求。
因此,让我从一个示例开始。
源目录C:\test1
包含以下文件:
目标目录树 C:\test2
包含以下目录和文件:
在此示例中,仅应将文件Test1.txt
复制到目录C:\test2
,因为Test2.txt
和Test3.txt
已经存在于C:\test2
的子文件夹中。
因此,批处理文件执行后,目录树 C:\test2
应该如下所示:
这可以通过以下方式实现:
@echo off
for %%I in ("C:\test1\*") do (
dir "C:\test2\%%~nxI" /A-D /B /S >nul 2>nul
if errorlevel 1 copy "%%I" "C:\test2\" >nul
)
也可以使用single command line来做到这一点:
@for %%I in ("C:\test1\*") do @dir "C:\test2\%%~nxI" /A-D /B /S >nul 2>nul || copy "%%I" "C:\test2\" >nul
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
dir /?
copy /?
echo /?
for /?
if /?
答案 1 :(得分:0)
如果您想继续使用PowerShell,此代码可能会有所帮助。如果您满意,文件将被正确复制,请从-WhatIf
cmdlet中删除Copy-Item
。
好吧,我承认我没有用于测试的test1和test2目录,但这可能会让您入门。
$targetdir = 'C:\test2'
Get-ChildItem -File -Path 'C:\test1' |
ForEach-Object {
if ((Get-ChildItem -File -Recurse -Path $targetdir -Filter $_.Name).Count -eq 0) {
Copy-Item -Path $_.FullName -Destination $targetdir -WhatIf
}
}
如果将上面的脚本另存为Copy-IfNone.ps1
,则可以使用以下命令从cmd shell运行该脚本:
powershell -NoProfile -File .\Copy-IfNone.ps1