Typically we write shell scripts and run it under cygwin shell. The command used in scripts like rm, mv are obtained from cygwin installation. But recently we encountered a tedious issue with cygwin shell.
The 'rm' command run from cygwin fails with message "File name too long" for some of the files and it's causing build failure.
After a bit of research, I found there is a limit for file name length in cygwin (I guess 256 characters). Upgrading the cygwin may fix the issue, but I didn't want to do that.
Fix: I found that the native dos 'rmdir' command can delete these lengthy file names without any issue and hence I decided to call native dos commands from Shell scripts.
Here is a way to call native dos commands from cygwin shell
cmd /C rmdir /S /Q <directory>
here
cmd - Starts a new instance of the Windows command interpreter
/C - Carries out the command specified by string and then terminates
rmdir - dos command to delete directory
/S - recursive delete of files & sub-directories
/Q - Quiet
Just add this command to shell script. It may need some if condition to run this only on Windows platform.
The 'rm' command run from cygwin fails with message "File name too long" for some of the files and it's causing build failure.
After a bit of research, I found there is a limit for file name length in cygwin (I guess 256 characters). Upgrading the cygwin may fix the issue, but I didn't want to do that.
Fix: I found that the native dos 'rmdir' command can delete these lengthy file names without any issue and hence I decided to call native dos commands from Shell scripts.
Here is a way to call native dos commands from cygwin shell
cmd /C rmdir /S /Q <directory>
here
cmd - Starts a new instance of the Windows command interpreter
/C - Carries out the command specified by string and then terminates
rmdir - dos command to delete directory
/S - recursive delete of files & sub-directories
/Q - Quiet
Just add this command to shell script. It may need some if condition to run this only on Windows platform.
3 comments:
Long path tool is the best solution for your problem. try it and solve your problem.
thanks! Remember to escape backslashes, for example:
cmd /C fciv.exe -r e:\\SystemBackupsPleaseLeave
Post a Comment