小编Ros*_*dge的帖子

如何将一个目录树的内容移动到另一个目录树中?

我有一个目录,其中包含文件和许多级别的子目录:

C:\Source
Run Code Online (Sandbox Code Playgroud)

我想将C:\ Source的内容移动到:

C:\Destination
Run Code Online (Sandbox Code Playgroud)

要求:

  • 所有文件和所有子目录 中的 C:\ SourceData必须移动
  • 我将在批处理文件中运行该命令
  • 我不能使用Powershell或任何其他脚本语言

尝试0

XCOPY /E "C:\Source" "C:\Destination"
Run Code Online (Sandbox Code Playgroud)

这很好用,但它复制而不是移动.我无法复制然后删除源,因为我正在移动一大堆文件,并且没有足够的磁盘空间一次有两个副本.

尝试1

MOVE "C:\Source" "C:\Destination"
Run Code Online (Sandbox Code Playgroud)

这将整个C:\ Source目录移动 C:\ Destination中,所以我最终得到:

C:\Destination\Source
Run Code Online (Sandbox Code Playgroud)

尝试2

这个问题和接受的答案的帮助下,我提出了:

for /r "C:\Source" %%x in (*) do move "%%x" "C:\Destination"
Run Code Online (Sandbox Code Playgroud)

这会移动C:\ Source中的文件,但不会移动子目录或其内容.请注意,我使用%% x而不是%x,因为我在批处理文件中使用它.

使用FOR似乎很有希望,但我不确定我是否使用了正确的语法?我错过了什么吗?

尝试3

正如Nick D所说,我尝试重命名:

重命名"C:\ Source"目的地

对于示例场景,我给出了这个工作正常.不幸的是,我的真实目标目录与目录处于不同的级别,似乎不支持:

C:\>REN /?
Renames a file or files.

RENAME [drive:][path]filename1 filename2.
REN [drive:][path]filename1 filename2.

Note that you cannot specify a new drive or path for …
Run Code Online (Sandbox Code Playgroud)

windows cmd batch-file

19
推荐指数
2
解决办法
7万
查看次数

如何在Windows批处理文件中运行PowerShell脚本

如何将PowerShell脚本嵌入到与Windows批处理脚本相同的文件中?

我知道在其他情况下这种事情是可能的:

  • 在批处理脚本中嵌入SQL,sqlcmd并在文件开头巧妙地安排goto和注释
  • 在具有程序名称的*nix环境中,您希望在脚本的第一行运行脚本,例如,#!/usr/local/bin/python.

可能没有办法做到这一点 - 在这种情况下,我将不得不从启动脚本调用单独的PowerShell脚本.

我考虑过的一个可能的解决方案是回显PowerShell脚本,然后运行它.这样做的一个很好的理由是,尝试这个的部分原因是使用PowerShell环境的优点而没有例如转义字符的痛苦

我有一些不寻常的限制,并希望找到一个优雅的解决方案.我怀疑这个问题可能是各种各样的反应:"你为什么不尝试解决这个不同的问题." 我只想说这些是我的约束,对此感到抱歉.

有任何想法吗?是否有一个巧妙的评论和转义字符的合适组合,这将使我能够实现这一目标?

关于如何实现这一点的一些想法:

  • ^一行中的克拉是一个延续 - 就像Visual Basic中的下划线一样
  • &符号&通常用于将命令echo Hello & echo World结果分成两个回声在不同的行上
  • %0将为您提供当前正在运行的脚本

所以这样的事情(如果我可以使它工作)会很好:

# & call powershell -psconsolefile %0
# & goto :EOF
/* From here on in we're running nice juicy powershell code */
Write-Output "Hello World"
Run Code Online (Sandbox Code Playgroud)

除了...

  • 它不起作用......因为
  • 文件的扩展名不符合PowerShell的喜好: Windows PowerShell console file "insideout.bat" extension is not psc1. Windows PowerShell console file extension must be …

windows powershell scripting cmd batch-file

19
推荐指数
6
解决办法
2万
查看次数

什么导致xcopy告诉我拒绝访问?

我们的一个解决方案的postbuild任务使用xcopy将文件移动到构建工件的公共目录中.出于某种原因,在我的计算机上(以及在我测试的VM上),xcopy失败并显示"拒绝访问".以下是我尝试隔离问题所做的工作:

  • 我尝试了正常的副本; 这很有效.
  • 我仔细检查了所讨论的文件都不是只读的.
  • 我检查了源文件夹和目标文件夹的权限; 我完全控制了两者.
  • 我尝试从命令行调用xcopy,以防VS构建进程锁定文件.
  • 我使用Unlocker和Process Explorer来确定源文件上没有锁.

我错过了什么,除了涉及计算机的偏执阴谋理论让我?这种情况发生在我的开发机器和干净的虚拟机上,但项目中的任何其他人都不会发生这种情况.

windows cmd xcopy

18
推荐指数
3
解决办法
7万
查看次数

如何批量传递多个参数?

在我的批处理文件中,我想将多个参数传递给其他应用程序.

现在我做到了

app.exe %1 %2
Run Code Online (Sandbox Code Playgroud)

它只能传递两个参数,但我想通过传递给该批次的所有参数(我宁愿不写%1%2%3%4 ...)

有什么神奇的方法可以做到吗?

windows command-line batch-file

18
推荐指数
3
解决办法
3万
查看次数

最短的Windows批处理文件代码,以将文件的第一行设置为变量?

我正在寻找可能的最短代码,它将获得文本文件的第一行并将其设置为Windows中的变量.

在这个StackExchange网站的其他线程中有很多这种事情的例子,但我不是在寻找如何循环并显示文件中的所有行.我想要的只是简单地获得第一行.

windows cmd batch-file

18
推荐指数
2
解决办法
4万
查看次数

如何使用Windows命令行查找文件是否包含给定字符串

我正在尝试为Windows XP创建一个批处理(.bat)文件来执行以下操作:

If (file.txt contains the string 'searchString') then (ECHO found it!) 
ELSE(ECHO not found)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经找到了一种方法,使用FIND命令搜索文件中的字符串,该命令返回文件中找到字符串的行,但无法对其进行条件检查.

例如,这不起作用.

IF FIND "searchString" file.txt ECHO found it!
Run Code Online (Sandbox Code Playgroud)

这也不是:

IF FIND "searchString" file.txt=='' ECHO not found
Run Code Online (Sandbox Code Playgroud)

关于如何做到这一点的任何想法?

windows cmd batch-file

17
推荐指数
2
解决办法
11万
查看次数

Java中的别名分析

有人可以指向我的Java框架或别名分析实现.我查看了asm框架,但它只提供数据流分析和控制流分析.

更新:只是好奇,但有人知道Findbugs是否进行别名分析?

java compiler-construction optimization code-analysis java-bytecode-asm

17
推荐指数
3
解决办法
1512
查看次数

在VB.net中获取shell命令的输出

我有一个VB.net程序,我在其中调用Shell函数.我想从文件中获取从此代码生成的文本输出.但是,这不是执行代码的返回值,所以我真的不知道如何.

这个程序是一个服务,但可以访问磁盘没有问题,因为我已经记录了其他信息.整个服务有多个线程,所以我还必须确保在写入文件时它尚未被访问.

vb.net windows shell

17
推荐指数
2
解决办法
5万
查看次数

CMD:如何递归删除文件和目录的"隐藏"属性

我找不到命令或简单的一批命令来递归地从文件和目录中删除"隐藏" - 属性.所有命令如"attrib"和"for"似乎都会跳过隐藏文件.例如:

attrib -H /S /D /L mydir
Run Code Online (Sandbox Code Playgroud)

什么都不做,因为它会跳过所有隐藏的东西.有人知道如何使用标准Windows工具执行此操作吗?

windows cmd batch-file

17
推荐指数
3
解决办法
16万
查看次数

如何使用COPY命令附加到文件

我正在运行Windows 7 Ultimate x64,但我的经验可以追溯到DOS 3.0.

因为像DOS 3.1一样,你可以使用COPY命令将文件附加到另一个文件:

COPY FILE1+FILE2=FILE1
Run Code Online (Sandbox Code Playgroud)

需要一个临时的FILE3是不必要的.

这是因为,只要你加入,你经常需要更新您的一个新的程序非常方便的命令CONFIG.SYSAUTOEXEC.BAT文件.

它也曾经是得到正确的订单是重要的,否则你最终会得到一个空的FILE1.

但是今天当我尝试的时候,它FILE1没有动过,当我颠倒了命令时,它(可以理解地)制作FILE1 了一份副本FILE2.

有谁知道它是否被其他方法取代,何时发生这种变化?

编辑:

我一直在做更多的测试,奇怪的是即使上面的代码不起作用,你仍然可以从控制台复制并将其附加到现有文件,如下所示:

copy file1+con=file1
Type some text to append to file1
^Z ([CTRL]+Z the End Of File character)
Run Code Online (Sandbox Code Playgroud)

我想知道我的Windows版本是否以某种方式搞砸了.任何人都可以复制我的发现吗?

编辑:

它适用于95/98/ME/2000/XP/XP Mode/7 Professional x64/8 x64.所以我想这不是7 Ultimate x64问题,而是我机器的问题.

*叹气*

编辑:

最后编辑,我保证.:)

这不是我的机器的问题,这是File1的一个问题.显然当我第一次将File2附加到它时,[CTRL] + Z(EOF字符)从未被覆盖,导致文件看起来像这样:

Original Data
Original Data
[EOF]
Appended Data
Appended Data
Appended Data
Run Code Online (Sandbox Code Playgroud)

您可以在命令提示符处使用以下实验自行复制此项.(其中^ Z是字符[CTRL] + Z)

在命令提示符下键入:

copy con file1
File …
Run Code Online (Sandbox Code Playgroud)

windows cmd batch-file windows-7-x64

16
推荐指数
3
解决办法
8万
查看次数