我在尝试仅递归获取文件名(没有扩展名或文件路径)时遇到了一个小问题。这在根文件夹中对我有用:
dir /b
Run Code Online (Sandbox Code Playgroud)
但是当我添加 /s 来递归扫描时,我还在我不想要的文件名之前得到了文件路径。有没有办法从目录中的所有子文件夹中获取裸文件名?
我在 Windows 7 x64 我宁愿使用常规命令提示符而不是 PS 或 VBS
我知道我可以通过这种方式获得输出(捕获标准和错误):
[batchFilePath] > [logFilePath] 2>&1
Run Code Online (Sandbox Code Playgroud)
或者这样用于标准输出:
C:\MyBatchFile.bat > output.txt
Run Code Online (Sandbox Code Playgroud)
但是有没有办法在不指定批处理文件本身的位置的情况下做到这一点?
例如,假设我运行(只需双击执行)C:\MyFolder\MyBatch.cmd,在退出批处理文件(或完成)后,我可以在 C:\MyFolder\MyBatch.txt 中找到输出
如果是这样,我需要在批处理文件本身中包含哪些代码?
我正在尝试使用7-Zip创建备份脚本。我已经完成了其他所有工作,但是这两个问题仍然阻碍了我。
首先,我想添加一个带有创建日期的时间戳,如下所示: 3.11.2010 Backup.7z
所以dd.mm.yyyy格式。我尝试了在 Internet 上找到的几个版本,但没有一个能像我想要的那样工作。我该怎么办?
其次,我只想将最后修改的文件夹添加到存档中(无论目录中存在多少个文件夹;我只需要最新的)。基本上,我有这样的事情:
App_v.1.0.0.4.exe_Url_2um2yok5q4vpoxnvnscpq3adfwff4wsmi
App_v.1.0.0.5.exe_Url_ft4mnvbu54hfrgdhxrahj4imlmermdsoe
Run Code Online (Sandbox Code Playgroud)
所以我只想添加最新的(1.0.0.5)文件夹。这些文件夹会更改并且总是具有不同的名称,因此基于名称的排序将是一个坏主意。
似乎 CMD 没有自己的跳转列表。有人已经创建了吗?我希望能够将脚本和命令文件仅固定到 cmd.exe。我可以使用/explorer作为目标框的第一行单独固定它们,但我希望默认情况下将它们全部固定到 cmd.exe .有点像所有文件夹都固定到 explorer.exe.I 还制作了一个看起来很糟糕的模型,以使问题更加清晰:

好吧,经常发生我想单击重命名而最终单击删除DEL的情况。对于删除,我使用该键,因此我不需要上下文菜单选项。
我尝试了几个程序,但不幸的是,它们只删除了第三方程序添加的上下文菜单项或我不想删除的某些 Windows 自己的东西。
我发现了一个程序,它可能可以做我想做的事(不是 100% 确定):在这里,但由于某种原因我无法让它工作。
我做了一个小模型,它现在的样子以及我想要的样子:

或者,如果无法删除它,那么也许有办法让它什么都不做(不破坏全局删除功能)或使其变灰?
具体来说,我想创建一个上下文菜单选项(右键单击)删除/删除当前行。问题是即使未选择该行也应删除。这意味着我不必在删除之前使用CTRL+ SHIFT+ UP& CTRL+ SHIFT+LEFT或鼠标来选择该行。唯一需要做的就是点击行使其被选中。
我还需要一个shortcuts.xml文件字符串,这样它就会显示在“运行”菜单下。我可以编辑contextmenu.xml自己,因为那是容易的部分。
是否可以?
我查看了各种 N++ 命令,有一些 Scintilla 命令看起来像我需要的,但我没有运气把它们放进去shortcuts.xml所以它们可以工作。
我正在尝试通过命令行删除一些注册表项(启动项),虽然我可以从HKCU \SOFTWARE\Microsoft\Windows\CurrentVersion\Run 中删除,但我无法从HKLM \SOFTWARE\Microsoft\Windows\CurrentVersion\ 中删除任何内容跑。
我什至通过 regedit.exe 在那里创建了一些临时密钥,但即使是那些也无法通过命令行删除。所以我在这里搜索了类似的线程,显然是用谷歌搜索的。通常发生这种情况是因为:
命令行给出的具体错误信息是:
ERROR: The system was unable to find the specified registry key or value.
Run Code Online (Sandbox Code Playgroud)
然而,密钥肯定存在于我试图从中删除它的位置,甚至 regedit 也在那里显示它。我也可以用 regedit 删除它,没有问题。
任何人都有任何线索要检查什么?
好的,所以在写这篇文章时,我偶然发现了一些非常奇怪的事情。看起来有两个版本的HKLM \SOFTWARE\Microsoft\Windows\CurrentVersion\Run。
我不知道这怎么可能,但是当我在 regedit 中复制密钥名称时,它们都是相同的,但它们显示不同的项目。第一个没问题,似乎 reg.exe 正在尝试查找并删除此位置中的密钥,这就是它出错的原因。第二个是有问题的,其中存在我需要通过命令行删除的密钥。
但是,当我向HKLM \SOFTWARE\Microsoft\Windows\CurrentVersion\Run添加相同的密钥时,它会被写入“正确”的位置,我也可以通过命令行将其删除。
好的,我想我现在知道问题所在了。当我运行本机 64 位版本的 regedit 时会显示“正确”位置,而只有当我运行 32 位版本的 regedit 时才会显示有问题的位置。
解决方案:
使用%windir%\SysWOW64\reg.exe操纵32位注册表项和%windir%\System32\reg.exe操纵64位注册表项。我将与程序作者进行一次严肃的谈话,讨论为什么他们将启动密钥推送到 64 位系统上的 32 位 reqistry。
command-line ×5
windows-7 ×3
batch-file ×2
context-menu ×2
7-zip ×1
batch ×1
filenames ×1
jumplist ×1
notepad++ ×1
recursive ×1
windows ×1