有没有一种简单的方法来使用DOS BAT命令语言获取DOS文件名的基本名称(没有扩展名的文件名)?
我同意:format c:\可能是一个好的开始,接下来是可启动的Linux CD(假设这些古董机器有一个CD阅读器 - 不是给定的).但是让我们假装我们只有DOS ...(这意味着:不是Windows - 甚至不是Windows 3.1,更不用说Windows 95,98,NT,ME,XP,Vista,7等)
我花了3个小时试图解决这个问题,但却找不到解决方案.这是我的批处理脚本:
if NOT Exist Counter.txt GOTO START
Type c:\counter.txt
if %COUNTER% EQU %Cycles% goto Pass
if NOT %COUNTER% EQU %Cycles% goto Cycle
:START
Set COUNTER=0
set CYCLES=250
:Cycle
set /A COUNTER=%COUNTER%+1 <----------- PROBLEM
echo Iteration %COUNTER% of %CYCLES%
echo Delay 3 seconds to reboot
choice /cy /n /t:y,3
warmboot.com
:Pass
pause
Run Code Online (Sandbox Code Playgroud)
它正在做的是运行文件"warmboot.com"(重新启动我的电脑)并运行250个周期.一旦循环运行250次(即当计数器等于循环时),它就会停止.
在Windows下,这是有效的.但是,这在DOS环境下不起作用.我已经尝试了从v4到v6.22甚至v7的版本,当它到达"问题"行时它们都会失败.
如果我这样做:
set /A COUNTER=%COUNTER%+1
echo %Counter%
Run Code Online (Sandbox Code Playgroud)
或这个:
set /A COUNTER+=1
echo %Counter%
Run Code Online (Sandbox Code Playgroud)
两者都将返回一个空行,即它不显示任何输出.
如果我输入:
set /?
Run Code Online (Sandbox Code Playgroud)
然后它显示了这个:
显示,设置或删除cmd.exe环境变量.
SET [variable = [string]]
variable指定环境变量名称.
string指定要分配给变量的一系列字符.
但在Windows下的CMD下键入相同的命令会显示更多内容.我认为DOS下的SET函数不支持算术函数,但出于工作目的,我只能在DOS下运行我的脚本.
有任何想法吗?
如何递归删除与特定模式匹配的所有文件和目录?例如,删除所有".svn"目录及其包含的文件?
(可悲的只有DOS)
我一直想知道如何编写像Sky Roads,Turbo,Aladdin,Duke Nukem,Commander Keen 6这样的DOS游戏.我找不到一个好的来源.如果我用C#,C++,Java等编写控制台应用程序.它总是显示并保持静止.它始终是文本.
任何好的来源将不胜感激.
我想创建一个批处理文件batch.bat,它接受2个必需参数:
%1 表示相对于当前目录的路径.%2 代表一个flaname.假设当前目录是father\me\.
用户可以按如下方式使用此批次:
batch child/grandchild logbatch ../brother log职位描述batch.bat如下.
%1目录,*.tex目录中的所有文件%1.以下是不完整的代码:
rem batch.bat takes 2 arguments.
cd %1
dir /b *.tex > <original directory>\%2.txt
Run Code Online (Sandbox Code Playgroud)
在DOS批处理中调用更改目录后如何返回原始目录?
我想在标准 C++ 中将任何大小整数的前导零位设置为 1。
例如。
0001 0011 0101 1111 -> 1111 0011 0101 1111
我发现执行此操作的所有算法都需要相当昂贵的前导零计数。然而,这很奇怪。有非常快速且简单的方法来执行其他类型的位操作,例如:
int y = -x & x; //Extracts lowest set bit, 1110 0101 -> 0000 0001
int y = (x + 1) & x; //Will clear the trailing ones, 1110 0101 - > 1110 0100
int y = (x - 1) | x; //Will set the trailing zeros, 0110 0100 - > 0110 0111
Run Code Online (Sandbox Code Playgroud)
因此,这让我认为必须有一种方法可以在由基本位运算符组成的一行简单代码中设置整数的前导零。请告诉我还有希望,因为现在我正在准备反转整数中的位顺序,然后使用设置尾随零的快速方法,然后再次反转整数以将前导零设置为 1。这实际上比使用前导零计数要快得多,但与上面的其他算法相比仍然相当慢。
template<typename T>
inline constexpr void reverse(T& x)
{
T rev …Run Code Online (Sandbox Code Playgroud) 大约15年前,我曾经自娱自乐,并通过编写直接修改显示器上文本的错误代码来惹恼我的CS老师.这可以通过在配备VGA的PC兼容机上访问0xB8000的视频内存来轻松完成.
快进到今天,我决定通过调试端口尝试我的旧技巧,让我可以访问读取物理内存.令我满意的是,它仍然在我尝试过的第一个平台上工作.然后,令人沮丧的是,我发现它不适用于许多其他系统.它似乎不适用于所有系统都有UMA(共享内存)图形.
因此,对于所有BIOS编写者,低级操作系统人员和视频驱动程序专家的问题 - 如果我在具有共享图形内存的PC兼容系统上的常规80x25颜色文本模式,在实模式下,以及0xb8000 - 0xB8FFF都是0xFF,而不是给我屏幕上的内容,屏幕缓冲区在哪里?
我需要列出文件的名称并将其存储为文本文件!
我做的是,我使用了以下dos命令
x:\xyz> dir *.* > files.txt
Run Code Online (Sandbox Code Playgroud)
它的作用是,它存储目录xyz中存在的文件的名称以及文件的大小,时间和日期!
如何只获取文件名?
我无法找到它是否是非常好奇 - 如果它没有资格,它缺乏什么功能才能获得资格?我做了相当数量的批次,并没有看到任何明显的能力下滑.
dos ×10
batch-file ×4
graphics ×2
windows ×2
c++ ×1
command-line ×1
file ×1
optimization ×1
recursion ×1
svn ×1
vga ×1
x86-16 ×1