我正在尝试创建一个批处理文件,该文件传递一个带有换行符的字符串,但它没有用完.字符串的延续作为新命令执行.
无论如何编码换行或使其工作?
我是cmd中的新手,所以请允许我提出一个愚蠢的问题:如何通过Windows cmd停止正在运行的Java进程?
例如,如果我们使用以下命令启动Jetty(一个迷你Web服务器):
start javaw -jar start.jar
Run Code Online (Sandbox Code Playgroud)
我们如何找到这个过程并在以后停止它?
显然以下命令不起作用:
stop javaw -jar start.jar
Run Code Online (Sandbox Code Playgroud) 这段代码有什么问题?它说ECHO is off.
@ECHO off
set /p pattern=Enter id:
findstr %pattern% .\a.txt > result
if %errorlevel%==0 (
set var2= <result
echo %var2%
set var1=%var2:~5,3%
echo %var1% > test.txt
echo %var1%
) else (
echo error
)
del result
pause
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.
我有一个批处理文件如下;
CD C:\MyFolder
findstr /c:"stringToCheck" fileToCheck.bat
IF NOT XCOPY "C:\OtherFolder\fileToCheck.bat" "C:\MyFolder" /s /y
Run Code Online (Sandbox Code Playgroud)
我收到一个错误("C:\ OtherFolder\fileToCheck.bat"此时出乎意料.)尝试执行此操作时.
请让我知道我做错了什么.
我正在尝试在一个控制台窗口上运行taskkill,该窗口的标题中有空格.如何将此窗口标题传递给taskkill.我尝试过以下方法:
taskkill /fi "WINDOWTITLE eq Administrator: My Window Title"
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用xcopy将多个文件和目录复制到外部硬盘驱动器上.以下命令工作正常......
xcopy d:\location\folder /e
Run Code Online (Sandbox Code Playgroud)
...除非它没有复制任何带有空格的d:/ location /文件夹的文件/目录.我知道dos需要带空格的文件名需要用引号括起来,但是如果我试图做一个巨大的递归副本,可能会有几个文件或文件夹中有空格的文件夹怎么办?
问题
在批处理文件的一部分(有点,请参阅额外信息)我需要重新启动资源管理器,所以我使用经过试验和测试的方法
taskkill /f /im explorer.exe >nul
explorer.exe
Run Code Online (Sandbox Code Playgroud)
然后发生这种情况
explorer.exe 成功终止explorer.exe 启动(见图2),但只打开一个资源管理器窗口,我将无限期地留下(参见图1)然后,我只能通过从任务管理器启动一个新任务来正确地重新启动资源管理器,因为我认为,它Win + R是资源管理器的一部分.
额外的信息
现在,我说"有点",因为我正在使用WinRAR创建的自执行SFX存档运行批处理文件.因此,在执行时,存档的内容被提取到,%temp%并且在成功提取时运行用户定义的文件(通常是引导过滤器,在这种情况下,我的批处理文件).
到目前为止,我已经推断过了
explorer.exe 肯定是被完全杀死了.explorer.exestart explorer.exe | cmd.exeExplorer这样的命令没有正确重启,所以它绝对不是.bat文件的问题.我可以确认它适用于Windows XP和Windows 7 x86,但不适用于Windows 7 x64(这是我的系统).
状态
目前,我对WinRAR持怀疑态度,因为我已经证明代码本身有效.所以,我正在用不同版本的WinRAR创建自执行的SFX.到目前为止,我已尝试过版本:
并且每次都有相同的结果.
我昨天向dev@rarlab.com提交了一份错误报告,今天早上得到了Eugene Roshal的答复
您好,SFX模块使用ShellExecuteEx来启动安装应用程序.通常它运作良好.我不知道为什么Explorer决定切换到窗口模式.现在我构建了一个小型独立程序
#include <windows.h>
void main()
{
SHELLEXECUTEINFO si;
memset(&si,0,sizeof(si));
si.cbSize=sizeof(si);
si.lpFile="test.bat";
si.nShow=SW_SHOWNORMAL;
ShellExecuteEx(&si);
}
Run Code Online (Sandbox Code Playgroud)
它运行test.bat,其中包含样本中的内容.此程序显示与WinRAR SFX完全相同的行为,因此Explorer在窗口中启动.
和今天早上的第二封电子邮件
对不起,现在没有建议.我用CreateProcess替换了ShellExecuteEx
#include <windows.h>
void main()
{ …Run Code Online (Sandbox Code Playgroud) 我已经将.NET WebAPI应用程序(针对.NET 4.5.2编译并在本地运行)部署到Azure应用服务中.
抛出的错误是
无法加载文件或程序集'System.Web.Mvc,Version = 4.0.40804.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.
我已检查App服务bin目录中的System.Web.Mvc.dll 大小为505504字节 - 与我的本地System.Web.Mvc.dll大小相同,版本为4.0.40804.0,更改了2014-09 -25,在本地工作没有问题.我能说的唯一区别是我在本地安装了.NET 4.5.2,而不是像Azure那样安装4.6.1.
我的Web.config中的条目是
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="4.0.40804.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
但我已经尝试过了
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
这也不起作用.
如何为我的应用程序编辑该条目以查找System.Web.Mvc.dll?
作为参考,完整的错误消息是:
'/'应用程序中的服务器错误.
无法加载文件或程序集"System.Web.Mvc"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.IO.FileLoadException:无法加载文件或程序集"System.Web.Mvc"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
来源错误:
在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.
程序集加载跟踪:以下信息有助于确定无法加载程序集"System.Web.Mvc"的原因.
警告:装配绑定日志记录已关闭.要启用程序集绑定失败日志记录,请将注册表值[HKLM\Software\Microsoft\Fusion!EnableLog](DWORD)设置为1.注意:程序集绑定失败日志记录会导致一些性能损失.要关闭此功能,请删除注册表值[HKLM\Software\Microsoft\Fusion!EnableLog].
堆栈跟踪:
[FileLoadException:无法加载文件或程序集'System.Web.Mvc'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)]
[FileLoadException:无法加载文件或程序集'System.Web.Mvc,Version = 4.0.40804.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)] System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)+0 System.Reflection.RuntimeAssembly .nLoad(AssemblyName fileName,String codeBase,Evidence assemblySecurity,StackCrawlMark&stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)+36 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName …
我需要列出文件的名称并将其存储为文本文件!
我做的是,我使用了以下dos命令
x:\xyz> dir *.* > files.txt
Run Code Online (Sandbox Code Playgroud)
它的作用是,它存储目录xyz中存在的文件的名称以及文件的大小,时间和日期!
如何只获取文件名?
我有一个目录,其中包含文件和许多级别的子目录:
C:\Source
Run Code Online (Sandbox Code Playgroud)
我想将C:\ Source的内容移动到:
C:\Destination
Run Code Online (Sandbox Code Playgroud)
要求:
尝试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)