我有一个包含以下内容的批处理文件:
echo %~dp0
CD Arvind
echo %~dp0
Run Code Online (Sandbox Code Playgroud)
即使更改目录值后%~dp0也是如此.但是,如果我从CSharp程序运行此批处理文件,则CD%~dp0后更改的值.它现在指向新目录.以下是我使用的代码:
Directory.SetCurrentDirectory(//Dir where batch file resides);
ProcessStartInfo ProcessInfo;
Process process = new Process();
ProcessInfo = new ProcessStartInfo("mybatfile.bat");
ProcessInfo.UseShellExecute = false;
ProcessInfo.RedirectStandardOutput = true;
process = Process.Start(ProcessInfo);
process.WaitForExit();
ExitCode = process.ExitCode;
process.Close();
Run Code Online (Sandbox Code Playgroud)
为什么以不同方式执行相同脚本的输出存在差异?
我在这里想念一下吗?
我一直在使用以下命令来获取文件日期.但是,fileDate自从我们移动到另一台服务器(Windows Server 2003)以来,该变量一直在返回空白值.
FOR /f %%a in ('dir myfile.txt^|find /i " myfile.txt"') DO SET fileDate=%%a
Run Code Online (Sandbox Code Playgroud)
有没有其他更可靠的方法来获取文件日期?
在我的应用程序中,我得到一个前导零的数字.我试图修剪前导零并得到实际数字.我尝试使用/aswitch,它将赋值的右侧视为算术表达式.所以我尝试过:
SET /a N = 00027
Run Code Online (Sandbox Code Playgroud)
上面给出了23的输出,它是八进制数27的十进制等值.然后我在网上找到了解决方案.
SET N = 00027
SET /a N = 1%N%-(11%N%-1%N%)/10
Run Code Online (Sandbox Code Playgroud)
这似乎有效,并给出了输出27.是否有更简单的方法来修剪批处理文件中的前导零?
有谁知道是否可以从Windows的命令提示符或控制台窗口复制文本,如命令,控制台应用程序或批处理文件的输出?
在尝试提取zip文件时,我收到错误:
c:\ path \name.zip不是RAR存档
没有要提取的文件
我的代码是:
p.StartInfo.FileName = @"C:\Program Files\WinRAR\rar.exe";
p.StartInfo.Arguments = string.Format("x -o- {2} \"{0}\" * \"{1}\"\\ ",
szFN,
outFolder,
passWord == null ? "" : string.Format("-p\"{0}\"", passWord));
Run Code Online (Sandbox Code Playgroud)
GUI版本可以提取zip和7z文件.
为什么这不起作用?如何提取zip和7z文件?
(注意:我有7zip的不同源代码.我想我可以合并这两个,只有当文件有rar扩展时才使用上面的.但我不喜欢那个解决方案.)
我试着理解批处理文件中单个命令行中的多个命令是如何工作的.
dir & md folder1 & rename folder1 mainfolder
Run Code Online (Sandbox Code Playgroud)
和其他情况类似的命令,但&用&&.
dir && md folder1 && rename folder1 mainfolder
Run Code Online (Sandbox Code Playgroud)
1.这两种情况有什么区别?
我想问的其他事情:
单线batch.bat:
dir & md folder1 & rename folder1 mainfolder
Run Code Online (Sandbox Code Playgroud)
多线程batch.bat:
dir
md folder1
rename folder1 mainfolder
Run Code Online (Sandbox Code Playgroud)
2.这种单线程和多线程在批处理文件程序方面是否相同?
还有一件事我想知道:
3.如果我从main.bat调用其他批处理文件,它们是否独立运行?主批处理文件不等待其他批处理文件中的结束程序?怎么做?
我有一个批处理文件,与我想要的文件位于同一目录中xcopy.但由于某种原因,文件未找到.
我认为当前目录始终是批处理文件所在的位置.
我以管理员身份运行批处理文件 这发生在Windows 7 64位台式计算机上.
批处理文件:
@ECHO OFF
XCOPY /y "File1.txt" "File2.txt"
PAUSE
Run Code Online (Sandbox Code Playgroud)
错误:
File not found - File1.txt
0 File(s) copied
Run Code Online (Sandbox Code Playgroud) 我在文件夹run中有文件夹system32.当我cmd从Total Commander中打开一个命令提示符窗口C:\Users\admin作为当前目录并想要进入该文件夹时,会输出以下错误消息:
系统找不到指定的路径.
当我cmd直接在文件夹中打开时run,它完美无缺.为什么?
打开的命令提示符窗口C:\Windows\System32\run:
C:\Windows\System32\run>cd..
C:\Windows\System32>cd run
C:\Windows\System32\run>
Run Code Online (Sandbox Code Playgroud)
简单运行命令提示符窗口cmd:
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Všetky práva vyhradené.
C:\Users\admin>cd..
C:\Users>cd..
C:\>cd windows
C:\Windows>cd system32
C:\Windows\System32>cd run
Systém nemôže nájst’ zadanú cestu.
Run Code Online (Sandbox Code Playgroud) 我想写一个简单的批处理文件来杀死包含窗口标题中某些文本的进程.现在我有:
taskkill /fi "Windowtitle eq XXXX*" /im cmd.exe
Run Code Online (Sandbox Code Playgroud)
这是有效的,除了我想要做的是在标题的开头和结尾都使用通配符.所以类似于:
taskkill /fi "Windowtitle eq \*X*" /im cmd.exe
Run Code Online (Sandbox Code Playgroud)
但我试过这个并没有用.有什么我想念的或者这不可能吗?
如何将这些设置转换为命令?

Archiv format:7z
compression level: Fastest
Compression method: LZMA2
Dictionary size: 64kb
Word size: 32
Solid Block size: 8MB
Number of CPU threads: 30
Run Code Online (Sandbox Code Playgroud)
我试过这个:
"7z.exe" a -t7z "F:\BACKUP" "D:\Source" -m0=LZMA2:d=64k
Run Code Online (Sandbox Code Playgroud)
压缩是好的,但使用GUI需要3个小时,而不是1小时.我查看了文档,但我无法理解.
batch-file ×8
cmd ×4
windows ×4
command-line ×3
process ×2
7zip ×1
c# ×1
command ×1
compression ×1
directory ×1
rar ×1
simultaneous ×1
system32 ×1
taskkill ×1
trim ×1
unrar ×1
windows-7 ×1
winrar ×1
zero ×1